当同一任务定期 运行 时清除之前的 celery 任务 redis 结果
Clear prior celery task redis results when the same task is run periodically
- 我有一个 celery-beat scraper,它 运行 定期从特定 api(每 30 分钟)
获取最新数据
- 今天 (2019 年 12 月 14 日),我仍然可以在 运行 5 天前 ( 2019 年 12 月 12 日)
- 这是浪费的内存,我希望在我的 ec2 上回收
问题:
- 设置天数后,celery clear 是否会在 redis 中产生结果?
- 是否有 celery 选项可以在任务装饰器中仅将最新的任务结果保留在 redis 中
@task(name='task_name')
?
- 是否可以选择仅将最后 X 个任务结果保存在 redis 内存中?
Does celery clear results in redis after a set number of days?
是
Is there a celery option to keep only the latest task result in redis in the task decorator @task(name='task_name')?
据我所知,没有这样的选择。
Is there an option to save only the last X number of task results in redis memory?
没有
Celery 作者决定(我认为这是一个很好的决定)让我们能够控制任务结果的持久化时间(有关详细信息,请参阅 result_expires 配置参数)。默认设置为一天。 - Celery 用户应根据自己的需要调整此设置。
如果您仍然看到 5 天前的任务结果,这意味着您更改了默认配置参数,或者您没有使用不支持任务结果过期的结果后端。这是我上面提到的部分的注释:
For the moment this only works with the AMQP, database, cache, Couchbase, and Redis backends.
When using the database backend, celery beat must be running for the results to be expired.
- 我有一个 celery-beat scraper,它 运行 定期从特定 api(每 30 分钟) 获取最新数据
- 今天 (2019 年 12 月 14 日),我仍然可以在 运行 5 天前 ( 2019 年 12 月 12 日)
- 这是浪费的内存,我希望在我的 ec2 上回收
问题:
- 设置天数后,celery clear 是否会在 redis 中产生结果?
- 是否有 celery 选项可以在任务装饰器中仅将最新的任务结果保留在 redis 中
@task(name='task_name')
? - 是否可以选择仅将最后 X 个任务结果保存在 redis 内存中?
Does celery clear results in redis after a set number of days?
是
Is there a celery option to keep only the latest task result in redis in the task decorator @task(name='task_name')?
据我所知,没有这样的选择。
Is there an option to save only the last X number of task results in redis memory?
没有
Celery 作者决定(我认为这是一个很好的决定)让我们能够控制任务结果的持久化时间(有关详细信息,请参阅 result_expires 配置参数)。默认设置为一天。 - Celery 用户应根据自己的需要调整此设置。
如果您仍然看到 5 天前的任务结果,这意味着您更改了默认配置参数,或者您没有使用不支持任务结果过期的结果后端。这是我上面提到的部分的注释:
For the moment this only works with the AMQP, database, cache, Couchbase, and Redis backends.
When using the database backend, celery beat must be running for the results to be expired.