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

Docker化Django项目用SentinelClient连Redis遇加载卡顿及主节点未找到错误

Django Redis Sentinel 连接问题排查与修复

核心配置错误分析

你遇到的MasterNotFoundError和加载卡顿问题,根源在于两处配置错误:

1. Sentinel 地址格式错误

你的SENTINELS配置里加了redis://前缀,这是错误的。Sentinel 连接不需要 URL 格式,直接填主机名(Docker 服务名)和端口即可:

SENTINELS = [
    ('redis-sentinel', 26379),  # 去掉 redis:// 前缀
]

2. LOCATION 配置错误

使用SentinelClient时,LOCATION不是具体的主节点地址,而是哨兵集群监控的主节点名称(比如默认的mymaster,取决于你的 Redis 哨兵配置)。你现在填的redis://redis-queue-1:6379是主节点的直接地址,哨兵找不到这个名称的主节点,所以抛出MasterNotFoundError。

修正后的完整配置示例

假设你的哨兵监控的主节点名称是mymaster,修正后的settings.py配置如下:

DJANGO_REDIS_CONNECTION_FACTORY = 'django_redis.pool.SentinelConnectionFactory'

SENTINELS = [
    ('redis-sentinel', 26379),
]

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'mymaster',  # 替换为你的哨兵监控的主节点名称
        'OPTIONS': {
            'SENTINELS': SENTINELS,
            'CLIENT_CLASS': 'django_redis.client.SentinelClient',
            'CONNECTION_POOL_CLASS': 'redis.sentinel.SentinelConnectionPool',
        },
    }
}

验证主节点名称

不确定主节点名称的话,进入 Redis Sentinel 容器执行以下命令查看:

redis-cli -p 26379
sentinel masters

输出里的name字段就是你需要填到LOCATION的值。

额外注意事项

  • 确保 Docker 网络中,Django 容器能正常访问 Sentinel 容器(你用服务名redis-sentinel能连通,这点应该没问题)
  • 确认哨兵集群已经正确监控主节点,且主节点处于正常运行状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:45:40