芹菜的节拍任务可以按时间间隔执行吗?



这是节拍任务设置:

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),
},
})

通常,任务A、任务B和任务C在我的命令celery -A myproj beat之后与节拍任务同时执行。但现在我希望任务A先执行,然后一段时间后任务B执行第二个,任务C最后执行。3600秒后,他们再次出击。3600秒后,他们再次出击。3600秒后,他们再次出击。有可能吗?

是的,这是可能的。为所有三个任务创建一个链,然后使用此链任务进行调度。

在您的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秒内按顺序执行一次。

相关内容

  • 没有找到相关文章

最新更新