在celery 中有没有一种干净的方法可以知道它的代理和/或结果后端是否关闭?我正在使用RabbitMQ代理和Redis后端celery 。目前,我发现最简单的方法是提交一个虚拟任务,当代理关闭时,该任务将引发kombu.exceptions.OperationalError,当后端关闭时,该任务将引发redis.exceptions.ConnectionError。不过,这感觉有点古怪,有更好的办法吗?
kombu.exceptions.OperationalError
redis.exceptions.ConnectionError
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")
abithluo2#
它没有处理检查rabbitmq连接
2条答案
按热度按时间brgchamk1#
在深入研究Celery的源文件后,我最终使用了以下代码
abithluo2#
它没有处理检查rabbitmq连接