【问题标题】:How to retrieve Celery tasks that have not yet started, using Django?如何使用 Django 检索尚未开始的 Celery 任务?
【发布时间】:2012-04-02 10:02:23
【问题描述】:

通过阅读Celery documentation,看来我应该能够使用以下python代码列出队列中尚未提取的任务:

from celery.task.control import inspect
i = inspect()
tasks = i.reserved()

但是,当运行此代码时,任务列表是空的,即使队列中有项目等待(我已经使用 django-admin 验证它们肯定在队列中)。使用等效的命令行也是如此:

$ celeryctl inspect reserved

所以我猜这实际上不是这个命令的用途?如果不是,那么检索尚未开始的任务列表的公认方法是什么?我是否必须在代码中维护自己的任务 ID 列表才能查询它们?

我问的原因是因为我正在尝试处理两个任务排队的情况,这些任务对数据库中的同一个对象执行写操作。如果两个任务并行执行并且任务 1 比任务 2 花费更长的时间,它将覆盖任务 2 的输出,但我想要最近任务的输出,即任务 2。所以我的计划是取消任何正在运行的待处理任务每次添加新任务时都会写入一个对象,该任务将写入同一个对象。

谢谢
汤姆

【问题讨论】:

    标签: python django rabbitmq celery


    【解决方案1】:

    您可以使用scheduled 而不是reserved 查看待处理的任务。

    $ celeryctl inspect scheduled

    【讨论】:

    • "celeryctl inspect scheduled" 仅显示 ETA 和倒计时任务。这忽略了常规任务,这是大多数工作负载的绝大多数。
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2015-10-24
    • 2020-06-24
    • 2020-07-31
    • 2016-11-27
    • 2013-06-30
    相关资源
    最近更新 更多