通过阅读Celery documentation,看起来我应该能够使用以下python代码列出队列中尚未被选中的任务:
from celery.task.control import inspect
i = inspect()
tasks = i.reserved()
但是,运行此代码时,即使队列中有等待的项目,任务列表也是空的(我已经使用django-admin确认它们肯定在队列中)。使用等效的命令行也是如此:
$ celeryctl inspect reserved
所以我猜这实际上并不是这个命令的用途?如果没有,检索尚未启动的任务列表的可接受方法是什么?我是否必须在代码中维护自己的任务ID列表才能查询它们?
我问的原因是因为我正在尝试处理两个任务排队的情况,这两个任务对数据库中的同一个对象执行写操作。如果两个任务并行执行且任务1比任务2花费的时间长,它将覆盖任务2的输出,但我想要最近任务的输出,即任务2.所以我的计划是取消任何操作的任务每次添加一个新任务时都会写一个对象,该任务将写入同一个对象。
感谢
汤姆
答案 0 :(得分:0)
您可以使用scheduled
代替reserved
查看待处理任务。
$ celeryctl inspect scheduled