我们正在使用 celery 和 redis。
我们在项目中实现了一些错误的 celery 架构。因此,任务被添加到 celery 的速度比它们被处理的速度更快。于是队列变得越来越大。
我们已经更改了项目的设计,以后不会发生这种情况。
但 celery 有大量积压,我想将其删除。准确地说,我们在队列中有 800000 个积压任务。
我们有一个队列,但已将两种不同类型的任务添加到该队列中。我们有一个名为 func_a 和另一个名称 func_b 的任务。该队列包含 300000 个 func_a 和 500000 个 func_b。
我想从队列中删除所有出现的 func_a。实现此目的的最简单方法是什么?
最佳答案
应该这样做:
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()
关于python - 从 Celery 中过滤和删除任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187217/