Sellerie.zeitpläne¶

Sellerie.zeitpläne¶

Zeitpläne definieren die Intervalle, in denen periodische Tasks ausgeführt werden sollen.

Ausnahmecelery.schedules.ParseException

Wird von crontab_parser ausgelöst, wenn die Eingabe nicht analysiert werden kann.

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

Zeitplan für periodische Aufgabe.

Parameter:

  • run_every – Intervall in Sekunden (oder ein timedelta).
  • relativ – Wenn auf True gesetzt, wird die Laufzeit auf die Auflösung des Intervalls gerundet.
  • nowfun – Funktion, die das aktuelle Datum und die aktuelle Uhrzeit zurückgibt(Klasse:~datetime.datum / Uhrzeit).
  • app – Sellerie-App-Instanz.

apphuman_secondsis_due(last_run_at)¶

Gibt ein Tupel von zwei Elementen zurück (is_due, next_time_to_check), wobei das nächste Mal in Sekunden überprüft wird.

zB

  • (True, 20) bedeutet, dass die Aufgabe jetzt ausgeführt werden soll und die nächste Überprüfung in 20 Sekunden erfolgt.
  • (Falsch, 12.3), bedeutet, dass die Aufgabe nicht fällig ist, der Scheduler jedoch in 12,3 Sekunden erneut überprüfen sollte.

Die nächste zeit zu überprüfen ist verwendet zu sparen energie/cpu zyklen, es muss nicht genau sein aber beeinflussen die precisionof ihre zeitplan. Sie müssen auch im Hinterkopf behaltender Wert von CELERYBEAT_MAX_LOOP_INTERVAL, der die maximale Anzahl von Sekunden bestimmt, die der Scheduler zwischen dem erneuten Überprüfen der periodischen Aufgabenintervalle schlafen kann. Wenn Sie also eine Aufgabe haben, die den Zeitplan zur Laufzeit ändert, entscheidet Ihr next_run_atcheck, wie lange es dauert, bis eine Änderung am Zeitplan wirksam wird. Das maximale Schleifenintervall geht vor der nächsten Prüfung bei zurückgegebenem Wert.

Maximale Intervallvarianz des Schedulers

Das standardmäßige maximale Schleifenintervall kann für verschiedene Scheduler variieren.Für den Standard-Scheduler ist der Wert 5 Minuten, aber für zB den Django-Sellerie-Datenbank-Scheduler ist der Wert 5 Sekunden.

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.

Wie bei einem Cron-Job können Sie Zeiteinheiten angeben, in denen die Aufgabe ausgeführt werden soll. Es ist eine einigermaßen vollständige Implementierung der Funktionen von cron, daher sollte es einen angemessenen Grad an Planungsanforderungen bieten.

Sie können eine Minute, eine Stunde, einen Wochentag, einen Tag des Monats und/oder einen Monat im Jahr in einem der folgenden Formate angeben:

minute

  • Eine (Liste von) Ganzzahlen von 0-59, die die Minuten einer Stunde darstellen, in der die Ausführung erfolgen soll; oder
  • Eine Zeichenfolge, die ein Crontab-Muster darstellt. Dies kann ziemlich erweitert werden, wie minute =’* / 15′ (für jedes Quartal) oder Minute =’1,13,30-45,50-59/2′.

hour

  • Eine (Liste von) Ganzzahlen von 0-23, die die Stunden eines Tages darstellen, an dem die Ausführung erfolgen soll; oder
  • Eine Zeichenfolge, die ein Crontab-Muster darstellt. Dies kann ziemlich erweitert werden, wie hour = ‚* / 3‘ (für alle drei Stunden) orhour = ‚0,8-17/2‘ (um Mitternacht und alle zwei Stunden während der Bürozeiten).

day_of_week

  • Eine (Liste von) Ganzzahlen von 0-6, wobei Sonntag = 0 und Samstag =6, die die Tage einer Woche darstellen, an denen die Ausführung stattfinden soll.
  • Ein String, der ein Crontab-Muster darstellt. Dies kann ziemlich erweitert werden, wie day_of_week=’mon-fri‘ (nur für Wochentage).(Beachten Sie, dass day_of_week= ‚* /2‘ nicht wörtlich ‚alle zwei Tage‘ bedeutet, sondern ‚jeden Tag, der durch zwei teilbar ist‘!)

day_of_month

  • Eine (Liste von) Ganzzahlen von 1-31, die die Tage des Monats darstellt, in dem die Ausführung erfolgen soll.
  • Ein String, der ein Crontab-Muster darstellt. Dies kann ziemlich erweitert werden, z. B. day_of_month = ‚2-30 / 3‘ (für jeden noch so nummerierten Tag) oder day_of_month = ‚1-7,15-21‘ (für die erste und dritte Woche des Monats).

month_of_year

  • Eine (Liste von) Ganzzahlen von 1-12, die die Monate des Jahres darstellt, in denen die Ausführung erfolgen kann.
  • Ein String, der ein Crontab-Muster darstellt. Dies kann ziemlich erweitert werden, z. B. month_of_year=’* / 3′ (für den ersten Monat jedes Quartals) oder month_of_year= ‚2-12 / 2‘ (für jeden Monat mit gleichmäßiger Nummer).

nowfun

Funktion, die das aktuelle Datum und die aktuelle Uhrzeit zurückgibt(datetime).

app

Die Sellerie-App-Instanz.

Es ist wichtig zu wissen, dass jeder Tag, an dem die Ausführung stattfinden soll, durch Einträge in allen drei Attributen day undmonth dargestellt werden muss. Wenn day_of_week beispielsweise 0 und day_of_monthis jeden siebten Tag ist, haben nur Monate, die am Sonntag beginnen und auch das Attribut month_of_year haben, Ausführungsereignisse. Oder day_of_week ist 1 und day_of_month ist ‚1-7,15-21‘ bedeutet jeden ersten und dritten Montag eines jeden Monats in month_of_year .

is_due(last_run_at)¶

Gibt ein Tupel von zwei Elementen zurück (is_due, next_time_to_run), wobei das nächste Mal in Sekunden ausgeführt wird.

Siehe celery.schedules.schedule.is_due() für weitere Informationen.

nowremaining_delta(last_run_at, tz=Keine, ffwd=<Klasse ‚).utils.in: timeutils.ffwd‘>remaining_estimate(last_run_at, ffwd=<Klasse ‚).utils.in: timeutils.ffwd‘>)¶

Gibt zurück, wann die periodische Aufgabe als nächstes als timedelta ausgeführt werden soll.

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

Parser für Crontab-Ausdrücke. Jeder Ausdruck der Form ‚Gruppen‘ (siehe BNF-Grammatik unten) wird akzeptiert und zu einer Reihe von Zahlen erweitert.Diese Zahlen stellen die Zeiteinheiten dar, für die die Crontab ausgeführt werden muss:

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

Der Parser ist ein universeller Parser, der zum Parsen von Stunden-, Minuten- und Wochentagsausdrücken nützlich ist. Beispielverwendung:

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

Es kann auch day_of_month und month_of_year Ausdrücke analysieren, wenn initializedwith ein Minimum von 1 . Beispielverwendung:

>>> 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')

Der maximal mögliche erweiterte zurückgegebene Wert wird durch die Formel ermittelt:

max_ + min_ - 1

AusnahmeParseException

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.