【问题标题】:Clear prior celery task redis results when the same task is run periodically定期运行相同任务时清除先前的芹菜任务redis结果
【发布时间】:2020-04-07 20:05:32
【问题描述】:
  • 我有一个 celery-beat 刮板,它会定期运行以从特定 api 获取最新数据(每 30 分钟一次)
  • 今天(2019 年 12 月 14 日),我仍然可以在 celery-flower 中看到 5 天前运行的任务的结果(2019 年 12 月 12 日)
  • 这是我希望在我的 ec2 上回收的浪费内存

问题:

  1. celery clear 一定天数后会导致redis吗?
  2. 任务装饰器@task(name='task_name')的redis中是否有celery选项只保留最新的任务结果?
  3. 是否可以选择仅将最后 X 个任务结果保存到 redis 内存中?

【问题讨论】:

    标签: celery celery-task


    【解决方案1】:

    celery clear 一定天数后会导致redis吗?

    是的

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

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

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

    没有。


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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-28
      • 2013-02-11
      • 2021-07-07
      • 2017-04-11
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多