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 定期任务输出,并使用 Redis 设置缓存