python - 连接到 Redis Sentinel 集群时使用 redis-py 的 MasterNotFoundError
问题描述
当我尝试按照此处的部署指南连接到主节点时遇到 MasterNotFoundError:https ://docs.bitnami.com/tutorials/deploy-redis-sentinel-production-cluster/
我连接到主 Redis Sentinel 节点的代码是:
from redis.sentinel import Sentinel
redis_host = 'redis.default.svc.cluster.local'
redis_port = 26379
sentinel = Sentinel([(redis_host, redis_port)], socket_timeout=0.1, password='abc')
redis_client = sentinel.master_for('mymaster', password='abc')
在他们的GitHub存储库中,我看到 sentinel.masterSet 的配置默认设置为 mymaster。但是当我尝试使用下面的代码递增时:
redis_client.incr('counter', 1)
我面临 redis.sentinel.MasterNotFoundError: No master found for 'mymaster' 错误。
我该如何解决这个问题?谢谢。
解决方案
正如这里所报告的https://github.com/andymccurdy/redis-py/issues/1125设置低 socket_timeout 可能会导致 MasterNotFound 错误,因为每个实例都被轮询但没有及时响应。您可以增加超时或将其删除以查看是否可以修复它。
推荐阅读
- python - Unicode 在 tkinter 中显示不正确
- python - 在 Django 模板中将浮点数转换并乘以 int
- jodd - jodd 无法发送对视图的响应
- python - 为什么 for loop 和 np.random.shuffle 在 Python 中不能按预期工作?
- python - 如何使用列表推导创建嵌套列表
- r - 使用 R 中列的内容重复数据框中的行
- neural-network - 运行更多的 epoch 真的是过度拟合的直接原因吗?
- sql-server - 如何在 Microsoft SQL Server Management Studio 中解决此错误
- installation - 我们可以在 Linux 服务器上安装多个 Rundeck 吗?
- android - 当用户突然失去网络时,Firebase onDisconnect 花费太多时间来更新实时数据库