2016-03-03 47 views
1

我已经配置的Django +芹菜:所有的作品中,我可以执行的任务,从views.py即所谓mul.apply_async((2, 5), queue='celery', countdown=5)的Django +芹菜:如何链任务与参数周期性任务

我需要shedule周期性任务将链接从用户传递的参数的简单任务。 我看了文档http://docs.celeryproject.org/en/latest/userguide/canvas.html,并知道如何链,我知道如何做不带参数的周期性任务@periodic_task(run_every=(crontab(hour="*", minute="*", 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,我不能动态地通过参数。

回答

1

您注册的celerybeat任务可能是一个包装,并在其中执行项目/任务逻辑,根据需要启动其他任务。您可以在您的芹菜拍打工作中获取项目任务。

  • CELERYBEAT_SCHEDULE.task - >'some_django_app.project_beat_task'

然后项目节拍任务可以获取正确的项目,并与他们有联系,也许产卵的任务链的每一个项目的所有任务