gpt4 book ai didi

python - Django + celery : how to chain tasks with parameters to periodic task

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:52 24 4
gpt4 key购买 nike

我已经配置了Django + Celery:一切正常,我可以执行从views.py调用的任务,即mul.apply_async((2, 5),queue='celery',countdown=5)

我需要安排定期任务,将简单任务与用户传递的参数链接起来。我阅读文档 http://docs.celeryproject.org/en/latest/userguide/canvas.html并且知道如何链接,我知道如何在没有参数的情况下进行定期任务 @periodic_task(run_every=(crontab(hour="*", 分钟="*", day_of_week="*")))

但是如何将其结合起来呢?

我想要的工作流程:

  1. 用户使用参数创建项目。使用该参数执行了 5 个任务。
  2. 然后我需要安排每 24 小时重复一次所有 5 项任务。所以在这里我不知道如何传递参数(它们保存到数据库)。

在其他答案中我看到了这个语法:

CELERYBEAT_SCHEDULE = {
# crontab(hour=0, minute=0, day_of_week='saturday')
'schedule-name': { # example: 'file-backup'
'task': 'some_django_app.tasks....', # example: 'files.tasks.cleanup'
'schedule': crontab(...)
'args': (2, 3)
},

}

但这里的问题是它位于Django的settings.py中,但不在tasks.py中,并且我无法动态传递args。

最佳答案

您注册的 celerybeat 任务可以是一个包装器,并在其中执行项目/任务逻辑,并根据需要触发其他任务。您可以在 celerybeat 作业中获取项目任务。

  • CELERYBEAT_SCHEDULE.task -> 'some_django_app.project_beat_task'

然后项目节拍任务可以检索正确的项目以及与其关联的所有任务,也许为每个项目生成一系列任务

关于python - Django + celery : how to chain tasks with parameters to periodic task,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35780445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com