这是节拍任务设置:
celery_app.conf.update(
CELERYBEAT_SCHEDULE = {
'taskA': {
'task': 'crawlerapp.tasks.manual_crawler_update',
'schedule': timedelta(seconds=3600),
},
'taskB': {
'task': 'crawlerapp.tasks.auto_crawler_update_day',
'schedule': timedelta(seconds=3600),
},
'taskC': {
'task': 'crawlerapp.tasks.auto_crawler_update_hour',
'schedule': timedelta(seconds=3600),
},
})
通常,taskA,taskB,taskC在我的命令celery -A myproj beat
之后同时执行作为节拍任务。但是现在我希望taskA首先执行,然后一段时间后taskB执行第二次,taskC最后执行。在3600秒后它们再次执行.3600秒后它们再次执行.3600秒后它们再次执行。有可能吗?
答案 0 :(得分:1)
在tasks.py
文件中:
from celery import chain
chained_task = chain(taskA, taskB, taskC)
然后安排chained_task
:
celery_app.conf.update(
CELERYBEAT_SCHEDULE = {
'chained_task': {
'task': 'crawlerapp.tasks.manual_crawler_update',
'schedule': timedelta(seconds=3600),
},
})
这样,您的任务将在3600秒内按顺序执行一次。