我在django项目中使用Celery,我的经纪人是RabbitMQ,我想检索队列的长度。我查看了Celery的代码,但没有找到工具来做到这一点。我在stackoverflow(Check RabbitMQ queue size from client)上发现了这个问题,但我发现它并不令人满意。
所有东西都是在芹菜中设置的,所以应该有某种神奇的方法来检索我想要的东西,而无需指定通道/连接。
有没有人对这个问题有任何想法?
谢谢!
答案 0 :(得分:4)
PyRabbit可能就是你要找的,它是RabbitMQ管理接口API的Python接口。它将允许您查询队列及其当前的消息计数。
答案 1 :(得分:3)
以下是如何在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
之前建议的Philip答案 2 :(得分:1)
您可以使用inspect
模块检查芹菜中的工作人员。这是guide。
同样对于RabbitMQ
,还有一些command line command。