使用django-eventstream实现SSE时Daphne生产环境报找不到server模块错误
问题解决方法
你的报错核心是ASGI配置中指定的Django配置模块路径和生产环境的项目结构不匹配,按照以下步骤修正即可:
- 第一步:修改
config/asgi.py中的配置模块路径
找到文件中的这行代码:
将os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")server.settings替换为你生产环境实际的settings模块路径,绝大多数情况下和你manage.py中指定的路径一致,如果你的settings.py和asgi.py同放在config目录下,直接改成:os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") - 第二步:确认daphne的执行目录
执行daphne config.asgi:application命令时,必须在项目根目录(也就是manage.py所在的目录)下运行,不能进入config目录执行,否则Python导包路径会异常。 - 第三步(可选):手动添加导包路径
如果修改后仍然报错,可以在config/asgi.py的导包部分额外添加项目根目录到Python搜索路径,代码如下:import os import sys # 新增这行,将项目根目录加入导包路径 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import django from django.core.asgi import get_asgi_application # 其余原有代码不变
修改完成后重启daphne服务即可正常加载。
内容的提问来源于stack exchange,提问作者Psionman
相关产品推荐
相关产品推荐

