Django Celery Beat 和任务结果

Posted

技术标签:

【中文标题】Django Celery Beat 和任务结果【英文标题】:Django Celery Beat and Tasks Results 【发布时间】:2021-02-25 16:42:47 【问题描述】:

django-celery-beat 是否可以不保存在短时间内执行的任务?默认情况下,所有结果都保存到任务结果表中。

我在 celeryproject 网页上找不到此信息。

或者,应该如何设置 postgres 自动清理以使索引不会占用那么多磁盘空间?

我想要一个简单的解决方案。覆盖 django celery 逻辑不是一种选择。

【问题讨论】:

【参考方案1】:

rpc 后端和task_ignore_result 是否满足您的需求:

app = Celery('APP_NAME', backend='rpc://', broker=BROKER_URL)
# Keep result only if you really need them: task_ignore_result = False
# In all other cases it is better to have place somewhere in db
# Note that this means you can’t use AsyncResult to check if the task is ready, or get its return value.
app.conf.task_ignore_result = True

这里有一些关于后端的文档:https://docs.celeryproject.org/en/latest/userguide/tasks.html#rpc-result-backend-rabbitmq-qpid

【讨论】:

应该保存到任务结果中的任务呢?我应该把它分成 2 个 celery 应用程序吗? 你好,是的,分成 2 个 celery 应用程序 这不是一个坏主意。谢谢。【参考方案2】:

我找到了解决方案。它比我想象的要简单。 如果你不想将结果保存到数据库中,只需在装饰器中添加:

@shared_task (ignore_result = True)

【讨论】:

以上是关于Django Celery Beat 和任务结果的主要内容,如果未能解决你的问题,请参考以下文章

django+redis+celery(beat)发布定时任务

python测试开发django-197.django-celery-beat 定时任务

Django celery beat 任务不起作用

在使用 django_celery_beat 设置的 Django 视图中使用 Celery 定期任务输出,并使用 Redis 设置缓存

Django Celery Beat 管理员更新 Cron Schedule 定期任务未生效

python测试开发django-160.Celery 定时任务 (beat)