通过哨兵将芹菜连接到 Redis



如何告诉芹菜我在 redis 上寻找的服务名称?我正在尝试使用 Celery 4 中的内置哨兵支持。我正在传递一个按照文档中所说的方式配置的代理 URL:sentinel://0.0.0.0:26379

但redis似乎抱怨没有通过service_name:

File "/usr/local/lib/python2.7/dist-packages/redis/sentinel.py", line 222, in discover_master
raise MasterNotFoundError("No master found for %r" % (service_name,))
OperationalError: No master found for None

是否可以使用此 URL 格式传递service_name?我试过了

sentinel://0.0.0.0:26379/my_service
sentinel://0.0.0.0:26379/0/my_service

我无法找到有关连接 URL 的任何文档 - 我找到了 redis-sentinel-URL,但我没有看到它包含在 redis 包中,所以我甚至不确定它是否被 redis 使用。

我设法解决了这个问题:芹菜需要设置broker_urlbroker_transport_options配置。

1)broker_url采用哨兵 URL 的形式: sentinel://localhost:26379

2)broker_transport_options是一个字典,需要您尝试连接到的 Sentinel 服务的名称。也就是说,如果你想将作业推送到一个名为"fiddlesticks"的队列: {"master_name":"小提琴棒"}

虽然上面的错误消息抱怨您传入了错误的"service_name",但您实际上希望使用键"master_name"传入。

相关内容

  • 没有找到相关文章

最新更新