通过Sentinel将芹菜连接到Redis

时间:2017-02-27 21:03:42

标签: redis celery redis-sentinel

如何告诉芹菜我在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使用。

1 个答案:

答案 0 :(得分:4)

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

1)broker_url采用哨兵网址的形式: 前哨://本地主机:26379

2)broker_transport_options是一个字典,需要您尝试连接的Sentinel服务的名称。即,如果你想把工作推到一个名为“fiddlesticks'”的队列中: {" master_name":"木竿"}

虽然上面的错误消息抱怨您传入了错误的' service_name',但实际上您想要使用密钥' master_name'来传递。