为了提高弹性,我将我的独立redis部署转换为一个由三个redis sentinel组成的集群。我可以通过修改celery 配置来将celery 连接到redis sentinel设置
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\u transport\u选项,并在redis配置中定义主\u名称。
我还使用flower来监视我的celery 队列,方法如下:
celery flower --basic_auth=user1:pass123 --port=5555 --broker=redis://localhost:6379/0
但是现在我有了redis sentinel部署,我想我需要一种方法来传递it connect的传输选项,否则如果我这样做:
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\u transport\u选项是一个celery 式的概念,而不是flower,我尝试了--conf选项用transport config传入config,但它似乎没有接收到它。
在此方面的任何帮助都将不胜感激。我翻遍了celery 和花的文档,看看我如何能解决这个没有运气。
1条答案
按热度按时间06odsfpq1#
我通过从django目录运行flower解决了这个问题,celery 和flower都是在这个目录中启动的,然后我可以在flower命令行中使用-a:
celery 花--basic\u 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'--调试-myappname
一旦我这样做了,弗劳尔就可以连接到我的哨兵,我可以看到我的任务和队列。