如何在任务结束后立即删除队列中的所有任务?
我想要这样的东西(Deleting all pending tasks in celery / rabbitmq),但是对于芹菜3.0。
由于
编辑:
来自芹菜文件: http://docs.celeryproject.org/en/latest/faq.html#how-do-i-purge-all-waiting-tasks
我的代码如下:
来自celery import current_app as celery
@task
def task_a():
celery.control.purge()
我期待着,如果我发出了5个任务,那么只会运行第一个任务。不知何故,我不是那样做的。
由于
答案 0 :(得分:1)
这些任务可能已被工人预取。要弄清楚这一点,尝试运行大量的任务,而不是通过预取乘数(见下文)乘以活动工作人员,并检查celery.control.purge()
返回的结果。您可以使用配置参数CELERYD_PREFETCH_MULTIPLIER
和CELERY_ACKS_LATE
来控制预取任务的数量。