如何获得芹菜经纪人和后端的状态?

时间:2019-03-22 12:06:49

标签: python redis rabbitmq celery

芹菜有一种干净的方法可以知道其经纪人和/或结果后端是否关闭?

我将芹菜与RabbitMQ经纪人和Redis后端一起使用。

当前,我发现最简单的方法是提交一个虚拟任务,该任务将在代理关闭时引发kombu.exceptions.OperationalError,在后端关闭时引发redis.exceptions.ConnectionError

但是,这感觉很hack。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

深入研究芹菜的源文件后,我最终使用以下内容

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")