Django的`python manage.py runserver`不支持asyncio和aiohttp。

5
在我的Django应用中,我需要代理用户向其他服务器的请求。我使用asyncio/aiohttp客户端
#user->request
.....

loop = asyncio.get_event_loop()
future = asyncio.ensure_future(self.run(t1, t2, t3))
loop.run_until_complete(future)

......
# response

当我用python manager.py runserver启动我的django服务器时,当用户请求时会出现下面的错误:

RuntimeError: There is no current event loop in thread 'Thread-1'.

但是如果我用Gunicorn启动,一切都正常。
也许我应该使用new_event_loop
为什么使用Gunicorn没有问题呢?
1个回答

0

请尝试以下操作:

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)

但是在同步的 Django 中使用 aiohttp 不会增加其速度,除非您在视图中发送了大量请求。如果是这样,最好将该任务移动到某个 worker(例如 Celery)中,或者不要使用 Django 而改用 aiohttp 作为服务器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接