从Redis后端删除所有Celery结果

时间:2019-04-08 12:25:02

标签: django redis celery

Celery中是否可以通过命令行删除所有以前的任务结果?我所能找到的所有参考文献purge,但这似乎都不是任务结果。我发现的其他解决方案包括使用芹菜节拍来定期删除它,但我正在寻找一种一次性的命令行解决方案。

我使用Celery 4.3.0。

2 个答案:

答案 0 :(得分:1)

因此,根据以下答案:How do I delete everything in Redis?

使用redis-cli:

FLUSHDB - Removes data from your connection's CURRENT database.
FLUSHALL - Removes data from ALL databases.

Redis文档:

flushdb
flushall

例如,在您的外壳中:

redis-cli flushall

并尝试清除芹菜。 来自celery doc:http://docs.celeryproject.org/en/latest/faq.html?highlight=purge#how-do-i-purge-all-waiting-tasks

答案 1 :(得分:1)

我想这就是您要寻找的东西

https://github.com/celery/celery/issues/4656

引用

https://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-result_expires

我将其设置如下:

RESULT_EXPIRE_TIME = 60 * 60 * 4  # keep tasks around for four hours

...

celery = celery.Celery('tasks',
                       broker=Config.BROKER_URL,
                       backend=Config.CELERY_RESULTS_BACKEND,
                       include=['tasks.definitions'],
                       result_expires=RESULT_EXPIRE_TIME)