来自阅读Celery documentation ,看起来我应该能够使用以下 python 代码列出队列中尚未被提取的任务:
from celery.task.control import inspect
i = inspect()
tasks = i.reserved()
但是,当运行这段代码时,任务列表是空的,即使队列中有项目在等待(我已经使用 django-admin 验证它们确实在队列中)。使用等效的命令行也是如此:
$ celeryctl inspect reserved
所以我猜这实际上不是这个命令的用途?如果不是,检索尚未开始的任务列表的公认方法是什么?我是否必须在代码中维护自己的任务 ID 列表才能查询它们?
我问的原因是因为我正在尝试处理两个任务排队的情况,这两个任务对数据库中的同一对象执行写操作。如果两个任务并行执行并且任务 1 比任务 2 花费的时间更长,它将覆盖任务 2 的输出,但我想要最近任务的输出,即任务 2。所以我的计划是取消任何正在运行的待处理任务每次添加新任务时都会写入一个对象,该任务将写入同一对象。
谢谢
汤姆
最佳答案
您可以使用 scheduled
而不是 reserved
查看挂起的任务。
$ celeryctl 检查计划
关于python - 如何使用 Django 检索尚未开始的 Celery 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974382/