celery.schedules
Расписания задают интервалы, с которыми выполняются периодические задачи.
- exceptioncelery.schedules.ParseException
-
Вызывается
crontab_parser, если входные данные не удаётся разобрать.
- classcelery.schedules.crontab(minute:int|str|Iterable[int]='*', hour:int|str|Iterable[int]='*', day_of_week:int|str|Iterable[int]='*', day_of_month:int|str|Iterable[int]='*', month_of_year:int|str|Iterable[int]='*', kwargs)
-
Расписание Crontab.
Crontab можно использовать в качестве значения
run_everyзаписи периодической задачи для добавления расписания, аналогичного crontab(5).Как и в задании cron(5), можно указать единицы времени, в которые должна выполняться задача. Это достаточно полная реализация возможностей cron, поэтому она должна удовлетворять большинству потребностей в планировании.
Можно указать минуту, час, день недели, день месяца и/или месяц года в любом из следующих форматов:
- minute
-
Целое число или список целых чисел от 0 до 59, обозначающих минуты часа, в которые должно происходить выполнение; или
Строка, задающая шаблон Crontab. Он может быть довольно сложным, например
minute='*/15'(каждые пятнадцать минут) илиminute='1,13,30-45,50-59/2'.
- hour
-
Целое число или список целых чисел от 0 до 23, обозначающих часы суток, в которые должно происходить выполнение; или
Строка, задающая шаблон Crontab. Он может быть довольно сложным, например
hour='*/3'(каждые три часа) илиhour='0,8-17/2'(в полночь и каждые два часа в рабочее время).
- day_of_week
-
Целое число или список целых чисел от 0 до 6, где воскресенье = 0, а суббота = 6, обозначающих дни недели, в которые должно происходить выполнение.
Строка, задающая шаблон Crontab. Он может быть довольно сложным, например
day_of_week='mon-fri'(только по будням). (Обратите внимание:day_of_week='*/2'означает не буквально «каждые два дня», а «каждый день, номер которого делится на два»!)
- day_of_month
-
Целое число или список целых чисел от 1 до 31, обозначающих дни месяца, в которые должно происходить выполнение.
Строка, задающая шаблон Crontab. Он может быть довольно сложным, например
day_of_month='2-30/2'(каждый чётный день) илиday_of_month='1-7,15-21'(первая и третья недели месяца).
- month_of_year
-
Целое число или список целых чисел от 1 до 12, обозначающих месяцы года, в которые может происходить выполнение.
Строка, задающая шаблон Crontab. Он может быть довольно сложным, например
month_of_year='*/3'(первый месяц каждого квартала) илиmonth_of_year='2-12/2'(каждый чётный месяц).
- nowfun
-
Функция, возвращающая текущие дату и время (
datetime).
- app
-
Экземпляр приложения Celery.
Важно понимать, что любой день, в который должно происходить выполнение, должен быть задан записями во всех трёх атрибутах дня и месяца. Например, если
day_of_weekравно 0, аday_of_month— каждые семь дней, события выполнения будут происходить только в месяцах, начинающихся с воскресенья и также указанных в атрибутеmonth_of_year. Илиday_of_weekравно 1, аday_of_month— ‘1-7,15-21’: это означает каждый первый и третий понедельник каждого месяца, указанного вmonth_of_year.- classmethodfrom_string(crontab:str) crontab
-
Создаёт Crontab из строки с выражением cron. Например,
crontab.from_string('* * * * *').┌───────────── minute (0–59) │ ┌───────────── hour (0–23) │ │ ┌───────────── day of the month (1–31) │ │ │ ┌───────────── month (1–12) │ │ │ │ ┌───────────── day of the week (0–6) (Sunday to Saturday) * * * * *
- is_due(last_run_at:datetime) tuple[bool,datetime]
-
Возвращает кортеж
(is_due, next_time_to_run).Если задан параметр
beat_cron_starting_deadline, планировщик проверит, что время last_run_at находится в пределах крайнего срока. Это предотвращает неожиданное повторное выполнение задач, которые должны были быть запущены согласно crontab, но не были запущены.Примечание
Время до следующего запуска указывается в секундах.
- См. также:
-
celery.schedules.schedule.is_due()— дополнительная информация.
- remaining_delta(last_run_at: datetime, tz: tzinfo | None = None, ffwd: type = <class 'celery.utils.time.ffwd'>) tuple[datetime,Any,datetime]
- remaining_estimate(last_run_at: ~datetime.datetime, ffwd: type = <class 'celery.utils.time.ffwd'>) timedelta
-
Оценка времени следующего запуска.
Возвращает время следующего запуска периодической задачи в виде
timedelta.
- classcelery.schedules.crontab_parser(max_:int=60, min_:int=0)
-
Анализатор выражений Crontab.
Принимаются выражения вида ‘groups’ (см. грамматику BNF ниже), которые преобразуются в набор чисел. Эти числа обозначают единицы времени, в которые должен запускаться Crontab:
digit :: '0'..'9' dow :: 'a'..'z' number :: digit+ | dow+ steps :: number range :: number ( '-' number ) ? numspec :: '*' | range expr :: numspec ( '/' steps ) ? groups :: expr ( ',' expr ) *
Это анализатор общего назначения, подходящий для разбора выражений часов, минут и дней недели. Пример использования:
>>> minutes = crontab_parser(60).parse('*/15') [0, 15, 30, 45] >>> hours = crontab_parser(24).parse('*/4') [0, 4, 8, 12, 16, 20] >>> day_of_week = crontab_parser(7).parse('*') [0, 1, 2, 3, 4, 5, 6]Он также может разбирать выражения дней месяца и месяцев года, если инициализирован с минимальным значением 1. Пример использования:
>>> days_of_month = crontab_parser(31, 1).parse('*/3') [1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31] >>> months_of_year = crontab_parser(12, 1).parse('*/2') [1, 3, 5, 7, 9, 11] >>> months_of_year = crontab_parser(12, 1).parse('2-12/2') [2, 4, 6, 8, 10, 12]Максимальное возможное возвращаемое расширенное значение вычисляется по формуле:
- exceptionParseException
-
Вызывается
crontab_parser, если входные данные не удаётся разобрать.
- parse(spec:str) set[int]
- celery.schedules.maybe_schedule(s:int|float|timedelta|BaseSchedule, relative:bool=False, app:Celery|None=None) float|timedelta|BaseSchedule
-
Возвращает расписание на основе числа, timedelta или готового расписания.
- classcelery.schedules.schedule(run_every:float|timedelta|None=None, relative:bool=False, nowfun:Callable|None=None, app:Celery|None=None)
-
Расписание периодической задачи.
- Параметры:
- propertyhuman_seconds:str
- is_due(last_run_at:datetime) tuple[bool,datetime]
-
Возвращает кортеж из
(is_due, next_time_to_check).Примечания
время до следующей проверки указывается в секундах.
-
-
(True, 20)означает, что задачу нужно выполнить сейчас, а следующую -
проверку следует выполнить через 20 секунд.
-
(False, 12.3)означает, что время выполнения задачи ещё не наступило, но планировщик должен проверить это снова через 12,3 секунды.
Время до следующей проверки используется для экономии энергии и ресурсов процессора. Оно не должно быть точным, но влияет на точность расписания. Также следует учитывать значение
beat_max_loop_interval, которое определяет максимальное количество секунд, в течение которых планировщик может спать между проверками интервалов периодических задач. Поэтому, если расписание задачи меняется во время выполнения, проверка next_run_at определяет, сколько времени пройдёт до вступления изменения расписания в силу. Максимальный интервал цикла имеет приоритет над возвращаемым значением времени до следующей проверки.Различия максимального интервала планировщика
Максимальный интервал цикла по умолчанию может различаться для разных планировщиков. Для планировщика по умолчанию это значение составляет 5 минут, а, например, для планировщика баз данных https://pypi.org/project/django-celery-beat/ — 5 секунд.
- relative:bool=False
- remaining_estimate(last_run_at:datetime) timedelta
- propertyseconds:int|float
- classcelery.schedules.solar(event:str, lat:int|float, lon:int|float, **kwargs:Any)
-
Солнечное событие.
Солнечное событие можно использовать в качестве значения
run_everyв записи периодической задачи, чтобы планировать её выполнение по определённым солнечным событиям.Примечания
Доступны следующие значения события:
dawn_astronomicaldawn_nauticaldawn_civilsunrisesolar_noonsunsetdusk_civildusk_nauticaldusk_astronomical
- Параметры:
-
event (str) – Солнечное событие, запускающее эту задачу. Доступные значения см. в примечании.
lat (float) – Широта наблюдателя.
lon (float) – Долгота наблюдателя.
nowfun (Callable) – Функция, возвращающая текущие дату и время в виде класса:~datetime.datetime.
app (Celery) – Экземпляр приложения Celery.
- is_due(last_run_at:datetime) tuple[bool,datetime]
-
Возвращает кортеж из
(is_due, next_time_to_run).Примечание
время до следующего запуска указывается в секундах.
См. также
Дополнительную информацию см. в разделе
celery.schedules.schedule.is_due().
- remaining_estimate(last_run_at:datetime) timedelta
-
Возвращает предполагаемое время следующего запуска.
- Возвращает:
-
- время, когда периодическая задача должна
-
запуститься в следующий раз; если сегодня её запускать не следует (например, сегодня солнце не восходит), возвращает время следующей проверки.
- Тип возвращаемого значения:
Copyright © 2017-2026 Asif Saif Uddin, core team & contributors. All rights reserved.
Celery is licensed under The BSD License (3 Clause, also known as the new BSD license). The license is an OSI approved Open Source license and is GPL-compatible.
https://docs.celeryq.dev/en/stable/reference/celery.schedules.html