Python 3.6。阻止I/O。服务器在处理第一个请求时不接受任何请求

问题描述:

问题是服务器在第一个请求未返回之前不接受任何请求。Python 3.6。阻止I/O。服务器在处理第一个请求时不接受任何请求

import asyncio 
import datetime as dt 
from aiohttp import web 


async def search(request): 
    print('!START! %s' % dt.datetime.now()) 

    await asyncio.sleep(5) 

    print('!--END! %s' % dt.datetime.now()) 
    return web.json_response(data={}) 


app = web.Application() 
app.router.add_get('/search/', search) 

web.run_app(app) 


#run_server 
#python -m aiohttp.web -H localhost -P 8080 handler:init_func 

例子: 我几乎在同一时间运行在两个选项卡http://localhost:8080/search/。 但我看到请求正在顺序处理。

!START! 2017-04-24 12:05:37.978347 
!--END! 2017-04-24 12:05:47.980859 
!START! 2017-04-24 12:05:48.037671 
!--END! 2017-04-24 12:05:58.040659 

但我预计请求将被并行处理。

!START! 2017-04-24 12:05:37.978347 
!START! 2017-04-24 12:05:38.000000 
!--END! 2017-04-24 12:05:47.980859 
!--END! 2017-04-24 12:05:48.000000 

我做了什么错事?

+0

你怎么调用搜索(请求)功能?请提供[最小,完整和可验证的示例](https://*.com/help/mcve)。 –

+0

从意见@hiroprotagonist '导入搜索 应用= web.Application() app.router.add_get( '/搜索/',搜索) routes.setup(APP)' – Roman

+0

你能解释一下你的问题? “直到第一个请求没有返回”是什么意思? –

大多数浏览器在内部使用连接池,并且不会创建到同一主机的新连接。因此两页共享相同的打开的套接字。