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

Django Channels连接Redis报认证错误,但CACHE/CACHEOPS正常

Django Channels Redis 认证错误(缓存配置正常)

遇到redis.exceptions.AuthenticationError: invalid username-password pair错误,但同个Redis服务的Django缓存配置能正常工作,问题出在channels_redis和django_redis对Redis连接参数的解析逻辑差异上。以下是几种解决方法:

1. 改用显式参数配置(推荐)

channels_redis支持直接指定连接参数,避免URL格式解析的问题,把CHANNEL_LAYERS改成如下格式:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("localhost", 6379)],
            "password": "your_actual_password",
            "db": 1,
        },
    },
}

或者用字典格式的地址配置:

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [
                {
                    "address": "redis://localhost:6379/1",
                    "password": "your_actual_password",
                }
            ],
        },
    },
}

2. 检查密码URL编码

如果密码包含特殊字符(比如@、:、/等),django_redis可能会自动处理编码,但channels_redis可能不会。需要手动对密码进行URL编码后再放入URL:
比如原密码是pass@123,编码后变成pass%40123,修改后的URL:

"hosts": ["redis://:pass%40123@localhost:6379/1"],

3. 确认Redis用户名配置

如果你的Redis确实设置了用户名(不是默认的无用户名状态),需要在URL中明确指定用户名:

"hosts": ["redis://username:password@localhost:6379/1"],

默认Redis只有requirepass配置,没有用户名,这种情况下不要添加用户名部分。

4. 升级channels_redis版本

部分旧版本的channels_redis对Redis URL的解析存在bug,升级到最新稳定版可以解决这类问题:

pip install --upgrade channels_redis

内容的提问来源于stack exchange,提问作者Sadegh-khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:05:07