Spec-Zone.ru › Celery

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]

Максимальное возможное возвращаемое расширенное значение вычисляется по формуле:

max_ + min_ - 1

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)

Расписание периодической задачи.

Параметры:
  • run_every (float, timedelta) – Интервал времени.

  • relative (bool) – Если задано значение True, время запуска будет округлено до точности интервала.

  • nowfun (Callable) – Функция, возвращающая текущие дату и время (datetime).

  • app (Celery) – Экземпляр приложения Celery.

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_astronomical

  • dawn_nautical

  • dawn_civil

  • sunrise

  • solar_noon

  • sunset

  • dusk_civil

  • dusk_nautical

  • dusk_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

Возвращает предполагаемое время следующего запуска.

Возвращает:
время, когда периодическая задача должна

запуститься в следующий раз; если сегодня её запускать не следует (например, сегодня солнце не восходит), возвращает время следующей проверки.

Тип возвращаемого значения:

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API