从Celery过滤和删除任务

时间:2015-07-02 14:25:14

标签: python redis celery

我们正在使用带有redis的芹菜。

我们的项目实施了一些错误的芹菜架构。所以芹菜的加工速度比加工过程要快。因此队列变得越来越大。

我们已经改变了项目的设计,以后不会发生。

但芹菜有大量的积压,我想删除。确切地说,我们在队列中有800000个积压任务。

我们有一个队列,但此队列中添加了两种不同类型的任务。我们有一个名为func_a的任务和另一个名为func_b的任务。该队列包含300000个func_a和500000个func_b。

我想从队列中删除所有出现的func_a。实现这一目标的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

这样的事情应该这样做:

from path.to.your.tasks import app

i = app.control.inspect()

for worker, jobs in i.scheduled().iteritems():
    for job in jobs:
        if job['task_name'] == 'path.to.your.tasks.func_a'
            app.AsyncResult(job['id']).revoke()