セロリビートで洗練されたスケジュールを設定することは可能ですか?たとえば、次のようなものです。
月曜日から金曜日に、パラメーター(x1、y1)を使用してジョブAを実行し、次にジョブBを実行します。土曜日、日曜日に、パラメーター(x2、y2)を使用してジョブAを実行し、ジョブBを実行しません。
このスケジュールをチェックする高頻度の「ティック」タスクを実装できることは知っていますが、このための何かがすでに存在する場合は、車輪の再発明をしたくありません。
セロリビートで洗練されたスケジュールを設定することは可能ですか?たとえば、次のようなものです。
月曜日から金曜日に、パラメーター(x1、y1)を使用してジョブAを実行し、次にジョブBを実行します。土曜日、日曜日に、パラメーター(x2、y2)を使用してジョブAを実行し、ジョブBを実行しません。
このスケジュールをチェックする高頻度の「ティック」タスクを実装できることは知っていますが、このための何かがすでに存在する場合は、車輪の再発明をしたくありません。
もちろん、タスクには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),
},
}