You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Channels未接管开发服务器问题求助

Django Channels 4.0.0 未启动ASGI服务器的排查方案

以下是针对问题的具体排查与解决步骤:

  • 确认Channels安装环境
    在虚拟环境中执行pip list,确保channels版本为4.0.0,且该虚拟环境是当前Django项目的运行环境。

  • 检查ASGI配置路径
    确认settings.py中的ASGI_APPLICATION = "BrokerBackEnd.asgi.application"完全匹配项目结构:

    • 项目根目录名称为BrokerBackEnd
    • asgi.py文件位于该根目录下
    • asgi.py中正确定义了application变量
  • 修复routing.py的导入缺失
    你提供的routing.py缺少必要的导入语句,会导致Django无法加载WebSocket路由,进而无法触发ASGI服务器启动。补充后的代码如下:

    from django.urls import re_path
    from .consumer import OrderConsumer
    
    websocket_urlpatterns = [
        re_path(r"socket/order/", OrderConsumer.as_asgi())
    ]
    
  • 验证Django版本兼容性
    Channels 4.0.0要求Django版本≥3.2,执行python -m django --version确认版本符合要求。

  • 尝试用Channels专属命令启动
    替换默认启动命令,执行python -m channels runserver,查看是否能正常启动ASGI服务器并显示对应版本提示。

  • 调整ASGI.py执行顺序
    若上述步骤无效,可调整asgi.py的导入顺序,确保先初始化Django ASGI应用,再加载Channels路由:

    import os
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'BrokerBackEnd.settings')
    
    # 先初始化Django ASGI应用
    from django.core.asgi import get_asgi_application
    django_asgi_app = get_asgi_application()
    
    # 再导入Channels相关模块
    from channels.routing import ProtocolTypeRouter, URLRouter
    import Orders.routing as route
    
    application = ProtocolTypeRouter({
        'http': django_asgi_app,
        'websocket': URLRouter(route.websocket_urlpatterns)
    })
    

内容的提问来源于stack exchange,提问作者Neha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:55:13