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

Django配置RedisChannelLayer出现aioredis ProtocolError报错如何解决

错误原因
  • Redis 默认服务端口为 6379,你启动 daphne 时指定了 -p 6379 参数,将 Django ASGI 服务绑定到了 Redis 本该使用的端口,导致 Redis 服务无法正常占用 6379 端口。
  • 当 Channels 配置尝试连接 127.0.0.1:6379 时,实际连接到的是 daphne 启动的 Web 服务,返回的是 HTTP 响应报文,首字节为 H(对应 HTTP 响应开头的 HTTP/1.1 前缀),不符合 Redis 通信协议格式,因此抛出协议错误。
修复步骤
  1. 先终止当前运行的 daphne 进程,释放 6379 端口占用
  2. 启动本地 Redis 服务:执行 brew services start redis,启动后可通过 redis-cli ping 验证服务状态,返回 PONG 即代表 Redis 运行正常
  3. 重新启动 daphne 服务,指定其他未被占用的端口,例如常用的 8000 端口:
    daphne -p 8000 VideoConference.asgi:application
    
  4. 保持你当前的 Redis 版 CHANNEL_LAYERS 配置不变,重启服务后即可正常连接 Redis Channel 层。
可选排查项

如果调整后仍然报错,可以检查以下配置:

  • 确认已安装适配版本的 channels-redis 依赖:执行 pip install channels-redis,注意 Channels 3.x 版本对应 channels-redis 3.x 版本,配套的 aioredis 版本需低于 2.0.0
  • 如果你给本地 Redis 设置了访问密码,需要调整 CHANNEL_LAYERS 的 hosts 配置为带认证的格式:"hosts": ["redis://:你的Redis密码@127.0.0.1:6379/0"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:45:04