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

Django同时使用Django REST framework与web sockets时API调用失败问题咨询

Django 同时使用 DRF 与 Websocket 相关问题解答

兼容性说明

Django完全支持同时运行Django REST Framework(DRF)的REST接口和Websocket长连接服务,通常通过官方维护的Channels库扩展异步能力即可实现,二者本身没有功能冲突。

故障排查解决步骤

  • 校验ASGI路由配置
    接入Websocket功能后,Django的启动入口会从WSGI切换为ASGI,你需要优先检查asgi.py文件的路由匹配规则:必须保证HTTP请求(包括所有DRF接口请求)的路由优先级高于Websocket路由,避免/subscribe/这类普通HTTP接口被误匹配到Websocket处理器导致报错,这是该类故障最常见的诱因。
  • 排查端口资源与进程冲突
    确认你的Websocket 8010端口监听逻辑是否和Django主服务(5010端口)共用进程资源:如果是独立启动的Socket服务,不要和Django主服务共享进程线程资源,避免HTTP请求处理被阻塞。如果是基于Channels实现的Websocket,不需要单独监听8010端口,直接在ASGI路由中匹配路径即可,多端口监听反而可能导致请求转发异常。
  • 验证DRF接口本身的可用性
    你是通过浏览器直接发起GET请求访问/subscribe/接口,DRF默认会返回可浏览API的HTML页面。你可以用接口调试工具(如Postman)发起GET请求,看是否能正常拿到JSON响应:如果JSON响应正常,仅浏览器访问报错,说明是DRF可浏览API的渲染依赖被Websocket相关配置修改导致,只需要调整DRF的渲染器配置即可。如果JSON响应也报错,再继续排查认证、权限相关配置。
  • 检查Channels中间件与全局配置冲突
    检查settings.py中的Channels中间件、信道层配置,是否有自定义中间件错误拦截了HTTP请求的会话、认证信息,导致DRF接口的身份校验、权限校验失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:54:03