Flower не может отслеживать очереди Celery, которые используют Redis Sentinel в качестве брокера, а не просто Redis.

Чтобы повысить отказоустойчивость, я преобразовал свое автономное развертывание 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 и определение master_name, как оно было установлено в моей конфигурации redis.

Я также использую Flower для мониторинга своих очередей Celery, выполнив что-то вроде этого:

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 передать в config с конфигурацией TRANSPORT, но, похоже, он не улавливает его.

Любая помощь по этому вопросу будет принята с благодарностью. Я просмотрел документацию по сельдерею и цветкам, чтобы увидеть, как я могу решить эту проблему, но безуспешно.


person Amro Younes    schedule 27.04.2020    source источник


Ответы (1)


Я решил эту проблему, запустив цветок из моего каталога Django, где запускаются сельдерей и цветок, и затем я смог использовать -A в своей командной строке для цветов как таковой:

цветок сельдерея --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 -A myappname

Как только я это сделал, Флауэр смог подключиться к моим часовым, и я мог видеть свои задачи и очереди.

person Amro Younes    schedule 30.04.2020
comment
но вы передали главное имя? - person Sreeraj Karichery; 22.03.2021
comment
Это в конфигурации, определенной в BROKER_TRANSPORT_OPTIONS - person Amro Younes; 23.03.2021