10

我在 django 项目中使用 Celery,我的代理是 RabbitMQ,我想检索队列的长度。我浏览了 Celery 的代码,但没有找到执行此操作的工具。我在 stackoverflow 上发现了这个问题(从客户端检查 RabbitMQ 队列大小),但我觉得它并不令人满意。

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

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

谢谢 !

4

3 回答 3

4

这是一个关于如何在 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

这是Philip先前建议的使用pyrabbit

于 2016-08-30T14:20:34.880 回答
3

PyRabbit可能是您正在寻找的,它是 RabbitMQ 管理接口 API 的 Python 接口。它将允许您查询队列及其当前消息计数。

于 2013-07-26T11:14:05.950 回答
1

您可以使用inspect模块检查芹菜中的工人。这是指南

还有RabbitMQ一些命令行命令

于 2013-07-25T16:53:44.203 回答