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

Django Channels生产环境WebSocket连接自动关闭问题求助

问题排查与修复方案

1. 缺失Redis服务+通道层配置错误

Channels依赖Redis做消息通道,当前配置存在两个核心问题:

  • docker-compose.yml未定义Redis服务
  • settings.py中Redis连接目标错误:用了127.0.0.1:8000(这是Daphne的端口),Redis默认端口为6379;且Docker容器间不能用127.0.0.1访问其他服务,需使用服务名

修复:
在docker-compose.yml中添加Redis服务:

services:
  # 保留原有db、app、proxy服务配置
  redis:
    image: redis:alpine
    volumes:
      - redis_data:/data

volumes:
  # 保留原有static_data
  redis_data:

修改settings.py中的CHANNEL_LAYERS配置:

CHANNEL_LAYERS = {
    'default': {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
                     "hosts": [("redis", 6379)],  # 使用Redis服务名+默认端口
                  },
    },
}

2. ALLOWED_HOSTS格式错误

环境变量ALLOWED_HOST中包含端口号,而ALLOWED_HOSTS仅需填写域名/IP,无需带端口,修正为:

ALLOWED_HOST=localhost,127.0.0.1

3. 确保用Daphne启动ASGI应用

开发模式的runserver仅适用于调试,生产环境必须用Daphne启动ASGI服务。检查Dockerfile的启动命令:

CMD ["daphne", "-b", "0.0.0.0", "-p", "8000", "LCD_Data_Management.asgi:application"]

同时确认requirements.txt包含必要依赖:

daphne>=4.0.0
channels-redis>=4.1.0

4. Nginx代理补全WebSocket超时设置

现有Nginx已配置WebSocket升级头,但需补充超时设置避免连接被过早断开:

location @proxy_to_app {
    proxy_pass http://app:8000;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;  # 用该变量替代硬写"upgrade",兼容性更好

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $server_name;

    # WebSocket长连接超时配置
    proxy_connect_timeout 7d;
    proxy_send_timeout 7d;
    proxy_read_timeout 7d;
}

5. 调整容器启动依赖顺序

在app服务的depends_on中添加Redis,确保Redis先于应用启动:

app:
    # 保留原有配置
    depends_on:
      - db
      - redis

验证步骤

  1. 重启容器:docker-compose down && docker-compose up --build
  2. 查看日志:docker-compose logs redis确认Redis正常启动;docker-compose logs app检查Daphne是否存在Redis连接错误
  3. 浏览器打开开发者工具,查看Network标签中的WebSocket请求,确认状态码为101 Switching Protocols

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:40:27