在Celery中获取队列中的任务列表
我该如何获取一个还没有处理的任务队列中的任务列表呢?
19 个回答
56
如果你在使用rabbitMQ,可以在终端里输入这个命令:
sudo rabbitmqctl list_queues
这条命令会显示出所有队列的列表,以及每个队列里还有多少个待处理的任务。例如:
Listing queues ...
0b27d8c59fba4974893ec22d478a7093 0
0e0a2da9828a48bc86fe993b210d984f 0
10@torob2.celery.pidbox 0
11926b79e30a4f0a9d95df61b6f402f7 0
15c036ad25884b82839495fb29bd6395 1
celerey_mail_worker@torob2.celery.pidbox 0
celery 166
celeryev.795ec5bb-a919-46a8-80c6-5d91d2fcf2aa 0
celeryev.faa4da32-a225-4f6c-be3b-d8814856d1b6 0
右边那一列的数字就是队列里待处理任务的数量。在上面的例子中,celery队列里有166个待处理的任务。
67
如果你在使用Celery+Django,最简单的方式就是直接在你的虚拟环境中,或者用完整路径来运行celery命令,来查看任务情况:
文档: http://docs.celeryproject.org/en/latest/userguide/workers.html?highlight=revoke#inspecting-workers
$ celery inspect reserved
$ celery inspect active
$ celery inspect registered
$ celery inspect scheduled
另外,如果你在使用Celery+RabbitMQ,你可以用下面的命令来查看队列列表:
更多信息: https://linux.die.net/man/1/rabbitmqctl
$ sudo rabbitmqctl list_queues
241
编辑:查看其他答案以获取队列中任务的列表。
你可以看看这里:
Celery指南 - 检查工作者基本上就是这个意思:
my_app = Celery(...)
# Inspect all nodes.
i = my_app.control.inspect()
# Show the items that have an ETA or are scheduled for later processing
i.scheduled()
# Show tasks that are currently active.
i.active()
# Show tasks that have been claimed by workers
i.reserved()
这要看你想要什么了。