如何告诉芹菜我在redis上寻找的服务名称?我正在尝试使用Celery 4中内置的Sentinel支持。我正在通过the documentation中所说的配置代理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
我还没有找到关于连接网址的任何文档 - 我发现redis-sentinel-URL但我没有看到它包含在redis包中,所以我甚至不确定正在被redis使用。
答案 0 :(得分:4)
我设法解决了这个问题:芹菜需要设置broker_url
和broker_transport_options
配置。
1)broker_url
采用哨兵网址的形式:
前哨://本地主机:26379
2)broker_transport_options
是一个字典,需要您尝试连接的Sentinel服务的名称。即,如果你想把工作推到一个名为“fiddlesticks'”的队列中:
{" master_name":"木竿"}
虽然上面的错误消息抱怨您传入了错误的' service_name',但实际上您想要使用密钥' master_name'来传递。