【发布时间】:2017-04-23 10:36:24
【问题描述】:
问题是服务器不接受任何请求,直到给出的第一个请求没有返回。
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
我做错了什么?
【问题讨论】:
-
如何调用
search(request)函数?请提供minimal, complete and verifiable example。 -
for @hiroprotagonist
from views import search app = web.Application() app.router.add_get('/search/', search) routes.setup(app) -
你能解释一下你的问题吗? “直到第一个请求没有返回”是什么意思?
-
无法复制。您的示例按预期工作(运行
curl http://localhost:8080/search/ &的几个时间)。 -
真的,它与 curl 并行工作。谢谢!但我已经在 FireFox 中运行过,而且我已经按顺序运行了。为什么浏览器按顺序工作? @kwarunek
标签: async-await python-3.5 python-asyncio aiohttp