使用Celery(RabbitMQ,Django)检索队列长度

时间:2013-07-25 16:24:51

标签: django queue rabbitmq celery django-celery

我在django项目中使用Celery,我的经纪人是RabbitMQ,我想检索队列的长度。我查看了Celery的代码,但没有找到工具来做到这一点。我在stackoverflow(Check RabbitMQ queue size from client)上发现了这个问题,但我发现它并不令人满意。

所有东西都是在芹菜中设置的,所以应该有某种神奇的方法来检索我想要的东西,而无需指定通道/连接。

有没有人对这个问题有任何想法?

谢谢!

3 个答案:

答案 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