How can I view the enqueued tasks in RabbitMQ?

左心房为你撑大大i 提交于 2019-12-04 19:39:49

问题


I'm using RabbitMQ as my message broker and my workers are Celery tasks. I'm trying to diagnose an issue where I'm enqueue tasks to RabbitMQ but Celery doesn't pick then up.

Is there a way I can check what tasks are enqueued in RabbitMQ? I'd like to see the date and time when they are enqueued, any ETA is specified, the arguments and the task name.

I haven't been able to find this information in the docs — maybe I've overlooked it — and was hoping that some of you might know an easy way to inspect the task queue. Thanks.


回答1:


You can use Flower to monitor tasks in real time.

https://github.com/mher/flower

Check out also rabbitmqclt command which inspects RabbitMQ server status:

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

rabbitmqctl list_queues



回答2:


Also some celery tasks to monitor the queue:

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

Check out these commands:

#shows status of all worker nodes
celery status
#List active tasks
celery inspect active
#Show worker statistics (call counts etc.)
celery inspect stats      



回答3:


As long as the management plugin is enabled, an arbitrary number of messages can be consumed from the queue and optionally requeued:

rabbitmqadmin get queue=queue_name requeue=true count=100



回答4:


I believe the command you are looking for is:

celery inspect reserved

The documentation[1] has the following description:

Reserved tasks are tasks that have been received, but are still waiting to be executed.

  • [1] http://docs.celeryproject.org/en/latest/userguide/workers.html?highlight=inspect%20reserved


来源:https://stackoverflow.com/questions/13049829/how-can-i-view-the-enqueued-tasks-in-rabbitmq

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!