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
我做了什么错事?
答
大多数浏览器在内部使用连接池,并且不会创建到同一主机的新连接。因此两页共享相同的打开的套接字。
你怎么调用搜索(请求)功能?请提供[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve)。 –
从意见@hiroprotagonist '导入搜索 应用= web.Application() app.router.add_get( '/搜索/',搜索) routes.setup(APP)' – Roman
你能解释一下你的问题? “直到第一个请求没有返回”是什么意思? –