【问题标题】:Django `python manage.py runserver` does not support asyncio&aiohttpDjango `python manage.py runserver` 不支持 asyncio&aiohttp
【发布时间】:2018-12-26 01:52:49
【问题描述】:

在我的 Django 应用程序中,我需要将来自用户的请求代理到其他服务器。我使用asyncio/aiohttp client

#user->request
.....

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

......
# response

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

RuntimeError: 线程 'Thread-1' 中没有当前事件循环。

但是当我以Gunicorn 开头时,一切正常。

也许我应该使用new_event_loop

为什么Gunicorn没有问题?

【问题讨论】:

    标签: python django python-asyncio coroutine aiohttp


    【解决方案1】:

    尝试以下操作:

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

    但是在同步 django 中使用 aiohttp 不会提高它的速度,除非你在一个视图中发送大量请求。如果您这样做,最好将该任务移至某个工作人员(例如 Celery)或使用 aiohttp 作为服务器而不是 Django。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-27
      • 2018-01-23
      • 2020-09-16
      • 2014-02-17
      • 1970-01-01
      • 2020-04-22
      • 2015-11-10
      相关资源
      最近更新 更多