Как получить статус брокера сельдерея и бэкэнда? - PullRequest
0 голосов
/ 22 марта 2019

Есть ли в сельдерее чистый способ узнать, не работает ли его брокер и / или серверная часть результата?

Я использую сельдерей с брокером RabbitMQ и серверной частью Redis.

В настоящее времяСамый простой способ, который я нашел, это отправка фиктивной задачи, которая вызвала бы kombu.exceptions.OperationalError, когда брокер не работает, и redis.exceptions.ConnectionError, когда серверная часть не работала.

Однако это кажется хакерским.Есть ли лучший способ?

1 Ответ

0 голосов
/ 24 марта 2019

После поиска в исходных файлах Celery я использовал следующее

import celery
import kombu
import redis

try:
    with celery.current_app.connection_for_write() as conn:
        conn.connect()
        conn.release()
        print("Broker is working")
except(ConnectionError, kombu.exceptions.OperationalError):
    print("Broker is down")

try:
    celery.current_app.backend.get('Whatever')
    print("Backend is working")
except(ConnectionError, redis.exceptions.ConnectionError):
    print("Backend is down")
...