【问题标题】:Django channels error when attempting to serve static files with devserver尝试使用 devserver 提供静态文件时 Django 通道错误
【发布时间】:2021-04-05 23:18:45
【问题描述】:

我将我的项目移动到另一个环境中,并在安装依赖项并尝试运行 manage.py runserver - devserver 后,在请求静态文件时出现以下错误。 坦率地说,我完全迷失了这个错误,有人知道这是怎么回事吗?

    HTTP GET /static/admin/css/responsive.css 500 [0.21, 127.0.0.1:59982]
Exception inside application: async_to_sync can only be applied to async functions.
Traceback (most recent call last):
  File "/home/maxehleny/.local/share/virtualenvs/mysite-EdbyOLs2/lib/python3.6/site-packages/channels/staticfiles.py", line 41, in __call__
    dict(scope, static_base_url=self.base_url), receive, send
  File "/home/maxehleny/.local/share/virtualenvs/mysite-EdbyOLs2/lib/python3.6/site-packages/channels/staticfiles.py", line 56, in __call__
    return await super().__call__(scope, receive, send)
  File "/home/maxehleny/.local/share/virtualenvs/mysite-EdbyOLs2/lib/python3.6/site-packages/channels/http.py", line 198, in __call__
    await self.handle(scope, async_to_sync(send), body_stream)
  File "/home/maxehleny/.local/share/virtualenvs/mysite-EdbyOLs2/lib/python3.6/site-packages/asgiref/sync.py", line 105, in __init__
    raise TypeError("async_to_sync can only be applied to async functions.")
TypeError: async_to_sync can only be applied to async functions.

我几乎不知道问题出在哪里,因为我看不出这与我自己的代码有什么关系。如果我注释掉频道,其他一切都可以正常工作。

Edit2 根据 ladruas 的回答降级到 asgiref==3.2.10 也对我有用。

这两者之间似乎不兼容 频道==3.0.3 asgiref==3.3.10

【问题讨论】:

  • 看看您是否可以修改标题以同时提及当 Debug=True 时未提供静态文件,因为这就是问题最初的样子,如果您只是调试自己的代码而不是 Django 本身.

标签: django django-channels django-staticfiles


【解决方案1】:

我将asgiref==3.2.10 添加到我的requirements.txt 文件中,似乎已经解决了问题。

【讨论】:

  • 我已从 asgiref 3.3.10 降级到您的版本,现在它也可以正常工作了!非常感谢。我认为这是一个依赖问题,只是无法确定在哪里。
  • 通过 pip 安装 Django 3.2.4 时,它给了我一个错误,说 3.2.10 不兼容,我必须使用 3.3.2 或更高版本。但是,3.3.2 给了我上述错误,降级到 3.2.10 没有给我任何问题。至少到目前为止,pip 似乎是错误的
猜你喜欢
  • 2021-10-03
  • 2012-01-30
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 2016-12-10
  • 1970-01-01
相关资源
最近更新 更多