为了提高弹性,我将独立的redis部署转换为三个Redis前哨的集群。我能够将Celery连接到Redis Sentinel设置,方法是修改我的Celery配置以包括
BROKER_URL = 'sentinel://10.1.1.1:26379/0;sentinel://10.1.1.2:26379/0;sentinel://10.1.1.3:26379/0'
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 32400, 'master_name': 'mymaster'}
连接到Celery的关键是添加BROKER_TRANSPORT_OPTIONS并按照在我的redis配置中设置的方式定义master_name。
我还使用Flower来监控我的芹菜队列,运行如下代码:
celery flower --basic_auth=user1:pass123 --port=5555 --broker=redis://localhost:6379/0
但是现在我有了一个Redis Sentinel部署,我想我需要一种方法来传递它成功连接的传输选项,否则如果我这样做:
celery flower --basic_auth=user1:pass123 --port=5555 -b 'sentinel://10.1.1.1:26379/0;sentinel://10.1.1.2:26379/0;sentinel://10.1.1.3:26379/0' --debug
它只是简单地挂起:
[I 200427 13:01:36 command:139] Visit me at http://localhost:5555
[I 200427 13:01:36 command:144] Broker: sentinel://10.1.1.1:26379/0
[I 200427 13:01:36 command:147] Registered tasks:
[u'celery.accumulate',
u'celery.backend_cleanup',
u'celery.chain',
u'celery.chord',
u'celery.chord_unlock',
u'celery.chunks',
u'celery.group',
u'celery.map',
u'celery.starmap']
[D 200427 13:01:36 command:149] Settings: {'cookie_secret': 'W0UNu/+hQLCUYD2smFhIBMo9nrJqn0ZimgrxxroGeSI=',
'debug': True,
'login_url': '/login',
'static_path': '/usr/local/lib/python2.7/dist-packages/flower/static',
'static_url_prefix': '/static/',
'template_path': '/usr/local/lib/python2.7/dist-packages/flower/templates'}
[D 200427 13:01:36 control:29] Updating all worker's cache...
我知道BROKER_TRANSPORT_OPTIONS是一个芹菜概念,而不是鲜花,我尝试了--conf选项来传入配置和传输配置,但它似乎没有接受它。
在这方面的任何帮助都将非常感谢。我仔细阅读了芹菜和鲜花的文档,看看如何才能解决这个问题。
发布于 2020-05-01 07:34:26
我从我的Django目录中运行from解决了这个问题,这里初始化了芹菜和from,然后我能够在我的from命令行中使用-A:
芹菜花--basic_auth=user1:pass123 --port=5555调试'sentinel://10.1.1.1:26379/0;sentinel://10.1.1.2:26379/0;sentinel://10.1.1.3:26379/0‘-b -A myappname
一旦我这样做了,Flower就能够连接到我的哨兵,我可以看到我的任务和队列。
https://stackoverflow.com/questions/61467597
复制相似问题