seler.harmonogramy

seler.harmonogramy¶

harmonogramy definiują przedziały, w których należy wykonywać okresowe zadania.

wyjątekcelery.schedules.ParseException

wywoływany przez crontab_parser, gdy nie można parsować wejścia.

classcelery.schedules.schedule(run_every=None, relative=False, nowfun=None, app=None)¶

Harmonogram zadań okresowych.

parametry:

  • run_every – interwał w sekundach (lubtimedelta).
  • relative – jeżeli jest ustawione na True, to czas pracy zostanie zaokrąglony do wyniku przedziału.
  • nowfun – funkcja zwracająca bieżącą datę i czas(Klasa:~datetime.datetime).
  • app-instancja aplikacji selera.

apphuman_secondsis_due(last_run_at)¶

zwraca krotkę dwóch elementów (is_due, next_time_to_check),gdzie następny czas do sprawdzenia jest w sekundach.

np.

  • (True, 20), oznacza, że zadanie powinno zostać uruchomione teraz, a następny czas do sprawdzenia jest za 20 sekund.
  • (False, 12.3), oznacza, że zadanie nie jest należne, ale że harmonogram powinien sprawdzić ponownie za 12,3 sekundy.

kolejny raz do sprawdzenia służy do oszczędzania energii / cykli procesora,nie musi być dokładny, ale wpłynie na dokładność harmonogramu. Należy również pamiętać o wartości CELERYBEAT_MAX_LOOP_INTERVAL, która decyduje o maksymalnej liczbie sekund, w których harmonogram cansleep między ponownym sprawdzaniem okresowych interwałów zadań. Jeśli więc masz zadanie, które zmienia harmonogram w czasie wykonywania, to Twój next_run_atcheck zadecyduje, ile czasu zajmie zmiana harmonogramu. Maksymalny interwał pętli pobiera precendenceover następnego sprawdzenia przy zwróconej wartości.

Scheduler maksymalna zmienność interwału

domyślny maksymalny interwał pętli może się różnić dla różnych harmonogramów.Dla domyślnego harmonogramu wartość wynosi 5 minut, ale dla np. harmonogramu bazy danych django-celery wartość wynosi 5 sekund.

maybe_make_aware(dt)¶nowrelative= False¶remaining_estimate(last_run_at)¶secondsto_local(dt)¶tzutc_enabled¶ classcelery.schedules.crontab(minute=’*’, hour=’*’, day_of_week=’*’, day_of_month=’*’, month_of_year=’*’, nowfun=None, app=None)¶

A crontab can be used as the run_every value of aPeriodicTask to add cron-like scheduling.

podobnie jak zadanie cron, możesz określić jednostki czasu, kiedy chcesz wykonać zadanie. Jest to rozsądnie kompletna implementacja funkcji crona, więc powinna zapewnić sprawiedliwy zakres potrzeb w zakresie planowania.

możesz określić minutę, godzinę, dzień tygodnia, Dzień miesiąca i/lub miesiąc w roku w jednym z następujących formatów:

minute

  • a (lista) liczb całkowitych od 0 do 59, które reprezentują minuty godziny, kiedy powinno nastąpić wykonanie; lub
  • łańcuch reprezentujący wzorzec crontab. To może być prettyadvanced, jak minute=’* / 15′(dla każdego kwartału) lubminute= '1,13,30-45,50-59/2″.

hour

  • a (lista) liczb całkowitych od 0 do 23, które reprezentują godziny dnia, w którym powinno nastąpić wykonanie; lub
  • łańcuch reprezentujący wzorzec crontab. Może to być prettyadvanced, jak hour= ’ * / 3 '(co trzy godziny) lubhour= ’ 0,8-17/2 '(o północy i co dwie godziny w godzinach pracy biura).

day_of_week

  • a (lista) liczb całkowitych od 0 do 6, gdzie niedziela = 0 i Sobota =6, które reprezentują dni tygodnia, które powinny zostać wykonane.
  • łańcuch reprezentujący wzorzec crontab. Może to być prettyadvanced, jak day_of_week=’mon-fri’ (tylko w dni powszednie).(Uważaj, że day_of_week=’ * / 2 'nie oznacza dosłownie 'każdego dnia’, ale 'każdego dnia, który jest podzielny przez dwa’!)

day_of_month

  • a (lista) liczb całkowitych od 1 do 31, które reprezentują dni miesiąca, w którym powinno nastąpić wykonanie.
  • łańcuch reprezentujący wzorzec crontab. Może to być prettyadvanced, takie jak day_of_month=’2-30/3′ (dla każdego evennumbered day) lub day_of_month=’1-7,15-21′ (dla pierwszego i trzeciego tygodnia miesiąca).

month_of_year

  • a (lista) liczb całkowitych od 1-12, które reprezentują miesiące roku, w którym może nastąpić wykonanie.
  • łańcuch reprezentujący wzorzec crontab. Może to być prettyadvanced, takie jak month_of_year=’*/3′ (dla pierwszego miesiąca każdego kwartału) lub month_of_year=’2-12/2′ (dla każdego evennumbered month).

nowfun

funkcja zwracająca bieżącą datę i czas (datetime).

app

instancja aplikacji Celery.

ważne jest, aby zdawać sobie sprawę, że każdy dzień, w którym powinno się wykonać wykonanie, musi być reprezentowany przez wpisy we wszystkich trzech atrybutach dnia i miesiąca. Na przykład, jeśli day_of_week jest równy 0, a day_of_monthis co siódmy dzień, tylko miesiące, które rozpoczynają się w niedzielę i są również w atrybucie month_of_year, będą miały zdarzenia wykonania. Lub, day_of_week to 1, A day_of_month to’ 1-7,15-21 ’ oznacza każdy pierwszy i trzeci poniedziałek każdego miesiąca obecnego w month_of_year.

is_due(last_run_at)¶

zwraca krotkę dwóch elementów (is_due, next_time_to_run),gdzie następny czas do uruchomienia jest w sekundach.

Zobaczcelery.schedules.schedule.is_due() aby uzyskać więcej informacji.

nowremaining_delta(last_run_at, tz=None, ffwd=<class 'seler.utils.timeutils.ffwd’ >remaining_estimate(last_run_at, FFWD=< class 'seler.utils.timeutils.ffwd’ >)¶

zwraca, gdy zadanie okresowe powinno być uruchomione jako timedelta.

classcelery.schedules.crontab_parser(max_=60, min_=0)¶

Parser dla wyrażeń crontab. Każde wyrażenie formy „grupy” (patrz gramatyka BNF poniżej) jest akceptowane i rozszerzane do zbioru liczb.Liczby te reprezentują jednostki czasu, które crontab potrzebuje Toruń na:

digit :: '0'..'9'dow :: 'a'..'z'number :: digit+ | dow+steps :: numberrange :: number ( '-' number ) ?numspec :: '*' | rangeexpr :: numspec ( '/' steps ) ?groups :: expr ( ',' expr ) *

parser jest programem ogólnego przeznaczenia, przydatnym do parsowania wyrażeń godzin, minut i tygodnia. Przykład użycia:

>>> minutes = crontab_parser(60).parse('*/15')>>> hours = crontab_parser(24).parse('*/4')>>> day_of_week = crontab_parser(7).parse('*')

może również parsować wyrażenia day_of_month i month_of_year, jeśli zostały zainicjalizowane z minimum 1. Przykładowe użycie:

>>> days_of_month = crontab_parser(31, 1).parse('*/3')>>> months_of_year = crontab_parser(12, 1).parse('*/2')>>> months_of_year = crontab_parser(12, 1).parse('2-12/2')

maksymalna zwrócona wartość Rozszerzona zostanie znaleziona przy pomocy formuły:

max_ + min_ - 1

wyjątekParseException

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.