使用数据库后端时如何使celery过期结果

时间:2018-12-12 16:45:10

标签: celery celerybeat

我不确定我了解result_expires的工作原理。

我读了

  

result_expires

     

默认:1天后过期。

     

存储任务逻辑删除后的删除时间(以秒为单位,或一个timedelta对象)。

     

如果启用了celery beat,则内置定期任务将在此时间之后删除结果(celery.backend_cleanup)。该任务每天凌晨4点运行。

     

...

     

在使用数据库后端时,必须运行celery beat才能使结果过期。

(从这里开始:http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-result_expires

因此,要使其正常工作,我实际上必须执行以下操作:

python -m celery -A myapp beat -l info --detach

文档所指的“芹菜节拍已启用”吗?或者,不是手动执行此操作,而是需要设置一些配置,这将导致celery beat被自动调用?

1 个答案:

答案 0 :(得分:1)

回复:芹菜跳动-你是对的。如果使用数据库后端,则必须按照原始帖子中的步骤运行celery beat。默认情况下,celery beat设置每日任务,该任务将从结果数据库中删除较旧的结果。如果您使用Redis结果后端,则不必运行芹菜拍。就个人而言,您如何选择运行芹菜节拍取决于我们,我们是通过systemd完成的。

如果要将默认到期时间配置为默认的1天以外的时间,则可以使用celery中的result_expires设置来设置记录结果应删除后的秒数。例如1800,持续30分钟。