是否可以使用 celery beat 配置复杂的时间表?例如,像这样:
周一到周五,用参数 (x1, y1) 做作业 A,然后做作业 B 周六、周日,用参数 (x2, y2) 做作业 A,不做作业 B
我知道我可以实现一个高频“tick”任务来检查这个时间表,但如果已经存在这样的东西,我不想重新发明轮子。
是否可以使用 celery beat 配置复杂的时间表?例如,像这样:
周一到周五,用参数 (x1, y1) 做作业 A,然后做作业 B 周六、周日,用参数 (x2, y2) 做作业 A,不做作业 B
我知道我可以实现一个高频“tick”任务来检查这个时间表,但如果已经存在这样的东西,我不想重新发明轮子。
当然,为您的任务使用crontab 计划。
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
# Executes every weekday morning at 7:30 A.M
'weekdays': {
'task': 'tasks.A',
'schedule': crontab(hour=7, minute=30, day_of_week='1-5'),
'args': (x1, y1),
},
# Executes saturday morning at 4:00 A.M
'saturday': {
'task': 'tasks.B',
'schedule': crontab(hour=7, minute=30, day_of_week='sat'),
'args': (x1, y1),
},
# Executes sunday morning at 2:15 A.M
'sunday': {
'task': 'tasks.A',
'schedule': crontab(hour=2, minute=15, day_of_week='sun'),
'args': (x2, y2),
},
}