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

使用Django Channels测试Websocket遭遇404 Not Found错误求助

Django Channels WebSocket 404 错误排查方案

核心问题:ASGI配置语法错误

你的asgi.py代码存在语法错误,直接导致WebSocket路由无法正确加载:

application = ProtocolTypeRouter({
    'http': get_asgi_application(),
    'websocket': URLRouter(
myapp.routing.websocket_urlpatterns.  # 多余的点号
        myapp.routing.websocket_urlpatterns  # 重复调用变量
    )
})

修复后的asgi.py代码

import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
import myapp.routing

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'routing_pro.settings')

application = ProtocolTypeRouter({
    'http': get_asgi_application(),
    'websocket': URLRouter(myapp.routing.websocket_urlpatterns)
})

额外检查项

  • 使用ASGI服务器启动项目
    避免用Django默认python manage.py runserver(新版虽支持,但推荐专用ASGI服务器),改用以下命令启动:
    daphne routing_pro.asgi:application
    # 或
    uvicorn routing_pro.asgi:application
    
  • 验证路由路径一致性
    确保前端连接地址ws://127.0.0.1:8000/ws/sc/与routing.py中定义的路径完全匹配,注意末尾斜杠。

错误原因说明

原asgi.py的语法错误会导致Python解析失败,ASGI应用无法初始化,服务器会 fallback到WSGI模式运行。而WSGI不支持WebSocket协议,你的请求会被当作普通HTTP请求处理,因找不到对应路由返回404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:27:47