9

我使用 RabbitMQ 作为我的消息代理,我的工作人员是 Celery 任务。我正在尝试诊断一个问题,即我将任务排入 RabbitMQ 但 Celery 没有接听。

有没有办法可以检查 RabbitMQ 中排队的任务是什么?我想查看它们入队的日期和时间、指定的任何 ETA、参数和任务名称。

我无法在文档中找到这些信息——也许我忽略了它——并且希望你们中的一些人可能知道一种检查任务队列的简单方法。谢谢。

4

4 回答 4

11

您可以使用 Flower 实时监控任务。

https://github.com/mher/flower

还检查检查 RabbitMQ 服务器状态的rabbitmqclt命令:

http://www.rabbitmq.com/man/rabbitmqctl.1.man.html

rabbitmqctl list_queues
于 2012-10-24T13:38:58.243 回答
6

还有一些 celery 任务来监控队列:

http://docs.celeryproject.org/en/latest/userguide/monitoring.html

查看这些命令:

#shows status of all worker nodes
celery status
#List active tasks
celery inspect active
#Show worker statistics (call counts etc.)
celery inspect stats      
于 2012-10-24T14:11:29.437 回答
1

我相信您正在寻找的命令是:

celery inspect reserved

文档[1] 有以下描述:

保留任务是已经收到,但仍在等待执行的任务。

于 2019-05-21T09:52:39.207 回答
0

只要启用了管理插件,就可以从队列中消费任意数量的消息,并且可以选择重新排队:

rabbitmqadmin get queue=queue_name requeue=true count=100
于 2016-05-03T15:23:53.733 回答