python - 如何使用 Django 检索尚未开始的 Celery 任务?

标签 python django rabbitmq celery

来自阅读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/

相关文章:

python - 删除具有一定百分比的 0's pandas 的列和行

python - 为 Bitnami Django Stack 安装模块

Django:显示用户名而不是 ID,如何?

spring - 如何在 Spring Cloud AWS SQS 中以编程方式设置消息处理程序?

python - 加速python pygame中的AI障碍检测

java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi?

queue - 删除 RabbitMQ 中的队列

python - 多服务器生产环境中的django-celery

python - 按名称和等级排序

python - 将后台任务抓取的图像保存到 ImageField