我在 django 项目中使用 Celery,我的代理是 RabbitMQ,我想检索队列的长度。我浏览了 Celery 的代码,但没有找到执行此操作的工具。我在 stackoverflow 上发现了这个问题(从客户端检查 RabbitMQ 队列大小),但我觉得它并不令人满意。
一切都在 celery 中设置,所以应该有某种神奇的方法来检索我想要的东西,而无需指定通道/连接。
有人对这个问题有任何想法吗?
谢谢 !
我在 django 项目中使用 Celery,我的代理是 RabbitMQ,我想检索队列的长度。我浏览了 Celery 的代码,但没有找到执行此操作的工具。我在 stackoverflow 上发现了这个问题(从客户端检查 RabbitMQ 队列大小),但我觉得它并不令人满意。
一切都在 celery 中设置,所以应该有某种神奇的方法来检索我想要的东西,而无需指定通道/连接。
有人对这个问题有任何想法吗?
谢谢 !
这是一个关于如何在 rabbitMQ 中为给定队列读取队列长度的示例:
def get_rabbitmq_queue_length(q):
from pyrabbit.api import Client
from pyrabbit.http import HTTPError
count = 0
try:
cl = Client('localhost:15672', 'guest', 'guest')
if cl.is_alive():
count = cl.get_queue_depth('/', q)
except HTTPError as e:
print "Exception: Could not establish to rabbitmq http api: " + str(e) + " Check for port, proxy, username/pass configuration errors"
raise
return count
PyRabbit可能是您正在寻找的,它是 RabbitMQ 管理接口 API 的 Python 接口。它将允许您查询队列及其当前消息计数。