如何告诉芹菜我在 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_url
和broker_transport_options
配置。
1)broker_url
采用哨兵 URL 的形式: sentinel://localhost:26379
2)broker_transport_options
是一个字典,需要您尝试连接到的 Sentinel 服务的名称。也就是说,如果你想将作业推送到一个名为"fiddlesticks"的队列: {"master_name":"小提琴棒"}
虽然上面的错误消息抱怨您传入了错误的"service_name",但您实际上希望使用键"master_name"传入。