2013-02-20 2 views
3

Можно ли настроить сложное расписание с биением сельдерея? Например, что-то вроде этого:Как назначить рабочие дни недели в сельдерее

В понедельник-пятницу выполните задание A с параметрами (x1, y1), затем выполните задание B В субботу, воскресенье, выполните задание A с параметрами (x2, y2) t do job B

Я знаю, что могу реализовать высокочастотную задачу «отметить», которая будет проверять это расписание, но я не хочу изобретать велосипед, если что-то для этого уже существует.

ответ

9

Обязательно используйте crontab schedule для выполнения своих задач.

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

Связано ли это с операционной системой crontab или внутренним по отношению к celerybeat? – Goro

+0

@ Goro: Это класс, предоставляемый сельдереем. –