python - 从 Celery 中过滤和删除任务

标签 python redis celery

我们正在使用 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/

相关文章:

python - 在python中将距离矩阵重新排列成 block 形式

redis - redismodules 是 redis 4.0-rc2 的一部分吗?

python - celery:在所有子任务的所有子任务运行后调用任务

php - 根据各种过滤条件匹配特定广告

Django Celery - 如何启动延迟 n - 秒的任务 - 倒计时标志被忽略

python - 使用 Python、Flask 和 Celery 的并发异步进程

python - PySpark 从 TimeStampType 列向 DataFrame 添加一列

python - 新数组的总大小必须不变

python - Scrapy:为每个start_url动态生成规则

design-patterns - 用于多个生产者和多个消费者的 Redis pub sub