使用Django Channels搭建聊天应用启动ASGI服务器报错求助
解决Django Channels启动ASGI服务器的配置错误
问题原因
你在asgi.py里手动调用settings.configure(project.settings)的方式不正确,Django需要通过环境变量指定配置文件,或者遵循标准ASGI初始化流程加载设置,否则会触发配置未就绪的报错。
修正方案
1. 替换正确的asgi.py代码
将你的asgi.py替换为以下标准初始化结构:
import os import django from django.core.asgi import get_asgi_application from channels.routing import ProtocolTypeRouter, URLRouter from chat.routing import websocket_urlpatterns # 设置Django配置文件的环境变量 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') # 初始化Django环境 django.setup() application = ProtocolTypeRouter({ "http": get_asgi_application(), "websocket": URLRouter( websocket_urlpatterns ), })
2. 两种启动方式任选其一
方式一:直接启动(需确保环境变量已配置)
如果你的系统已默认设置DJANGO_SETTINGS_MODULE为project.settings,可直接运行原命令:
daphne -b 0.0.0.0 -p 8001 project.asgi:application
方式二:启动时显式指定配置文件
若不确定环境变量状态,启动时直接指定配置文件更稳妥:
DJANGO_SETTINGS_MODULE=project.settings daphne -b 0.0.0.0 -p 8001 project.asgi:application
3. 额外检查项
- 确认项目结构中,
project是根目录,settings.py确实位于project文件夹下 - 确保
channels和daphne已正确安装,且INSTALLED_APPS中daphne排在最前面
内容的提问来源于stack exchange,提问作者Omnia Osman
相关产品推荐
相关产品推荐

