redis 如何获得celery 经纪人和后台的身份?

ih99xse1  于 2023-02-03  发布在  Redis
关注(0)|答案(2)|浏览(112)

在celery 中有没有一种干净的方法可以知道它的代理和/或结果后端是否关闭?
我正在使用RabbitMQ代理和Redis后端celery 。
目前,我发现最简单的方法是提交一个虚拟任务,当代理关闭时,该任务将引发kombu.exceptions.OperationalError,当后端关闭时,该任务将引发redis.exceptions.ConnectionError
不过,这感觉有点古怪,有更好的办法吗?

brgchamk

brgchamk1#

在深入研究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")
abithluo

abithluo2#

它没有处理检查rabbitmq连接

相关问题