定期运行同一任务时清除先前的celery任务redis结果

时间:2019-12-14 19:13:06

标签: celery celery-task

  • 我有一个芹菜刮板,它定期运行以从特定的api(每30分钟)获取最新数据
  • 今天(2019年12月14日),我仍然可以在(2019年12月12日)前5天运行的任务的芹菜花中看到结果li>
  • 这是我要在ec2上回收的浪费的内存

问题:

  1. 经过一定天数后,芹菜清除后是否会导致Redis?
  2. 在任务装饰器@task(name='task_name')中是否有芹菜选项可以仅将最新任务结果保留在redis中?
  3. 是否可以选择仅将最后的 X 个任务结果保存在Redis内存中?

enter image description here

1 个答案:

答案 0 :(得分:1)

  

经过一定天数后,芹菜清除后是否会导致Redis?

  

在任务装饰器@task(name ='task_name')中,是否有celery选项仅将最新任务结果保留在redis中?

据我所知,没有这样的选择。

  

是否可以选择仅将最后X个任务结果保存在Redis内存中?

否。


Celery作者决定(我认为这是一个不错的决定),使我们能够控制任务结果的持续时间(有关更多详细信息,请参见result_expires配置参数)。默认情况下,它设置为一天。 -Celery用户应根据需要调整此设置。

如果您仍然看到5天前的任务结果,则意味着您更改了默认配置参数,或者您没有使用不支持任务结果到期的结果后端。这是我上面提到的部分的注释:

  

目前,这仅适用于AMQP,数据库,缓存,Couchbase和Redis后端。

     

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