【问题标题】:celery task clean-up with DB backend带有数据库后端的 celery 任务清理
【发布时间】:2026-01-29 21:30:01
【问题描述】:

我试图了解如何以及何时在 celery 中清理任务。从the task docs 我看到:

旧结果将根据 CELERY_TASK_RESULT_EXPIRES 设置。默认情况下,这设置为过期 1 天后:如果您的集群非常繁忙,则应降低此值 价值。

但是这句话来自 RabbitMQ Result Backend 部分,我在 Database Backend 部分看不到任何类似的文本。所以我的问题是:有没有一种后端不可知的方法,我可以用芹菜清理旧任务,如果没有,我应该采用数据库后端特定的方法吗?以防我使用 django-celery 有什么不同。谢谢。

【问题讨论】:

    标签: celery django-celery


    【解决方案1】:

    如果您单击指向 CELERY_TASK_RESULT_EXPIRES 设置文档的链接:

    http://docs.celeryproject.org/en/latest/userguide/configuration.html#result-expires

    它确实说数据库支持这一点,但是你需要运行 celery beat(有一个默认的定期任务,每天调用一次,以删除过期的结果)。

    任务中的后端文档也应该提到这一点,也许也应该有一个专门的后端指南。如果您想为此游说,请在https://github.com/celery/celery/issues提出问题

    【讨论】: