apscheduler - doppelte Uhrzeit bei cron trigger ...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
der_Mausbiber
User
Beiträge: 72
Registriert: Donnerstag 2. Oktober 2014, 09:51

Hallo,

ich arbeite gerade mit dem apscheduler und ich nutze dabei sowohl den cron-, als auch den interval-Trigger.

In der Variable date_start_on steht Datum und Uhrzeit drin, z.Bsp. "2015-08-10 15:45:00".

Mit dem folgenden Code klappt alles, die Funktion do_something wird einmal am Tag um 15:45 ausgeführt.

Code: Alles auswählen

apscheduler.add_job(do_something, 'interval', days=1, start_date=date_start_on)
Versuche ich jetzt aber das gleiche mit dem cron-Trigger klappt das erstmal nicht.

Code: Alles auswählen

apcheduler.add_job(do_something, 'cron', day_of_week="mon,tue,wed,thu,fri", start_date=date_start_on)
Ich hatte erwartet das die Funktion do_something jetzt an jedem Wochentag um 15:45 ausgeführt wird - wird sie aber nicht.
Tatsächlich macht er gar nichts.

Erst wenn ich das Ganze so schreibe klappt es:

Code: Alles auswählen

apcheduler.add_job(do_something, 'cron', day_of_week="mon,tue,wed,thu,fri", hour=15, minute=45, start_date=date_start_on)
Ich muss also nochmal explizit die Uhrzeit angeben, obwohl diese bereits in der Variable date_start_on steht.

Mache ich hier irgendwas falsch oder muss ich beim cron-Trigger wirklich die Uhrzeit doppelt angeben, bzw. nimmt das "start_date"-Feld nur Datumsangaben an?
Zuletzt geändert von der_Mausbiber am Donnerstag 13. August 2015, 14:07, insgesamt 1-mal geändert.
BlackJack

@der_Mausbiber: Du musst die Zeit nicht doppelt angeben sondern Du musst die Zeit angeben und kannst mit `start_date` ein `datetime`-Objekt angeben vor dem der Trigger nicht auslöst. Das kann die gleiche Uhrzeit besitzen wie die Zeit zu der Du den Job ausführen lassen willst, muss es aber nicht. Kann man die Dokumentation an der Stelle so falsch verstehen?
der_Mausbiber
User
Beiträge: 72
Registriert: Donnerstag 2. Oktober 2014, 09:51

Wie immer Danke :)

Ja, ich finde man kann das schon falsch verstehen.
Ich hatte erwartet das das gleiche Übergabeargument "start_date" auch komplett gleich funktioniert funktioniert.
Bei "interval" nutzt er die Zeitangabe im Datetime-Objekt, bei "cron" aber offensichtlich nicht auf die gleiche Weise.
Für den cron-Trigger heißt das also im Umkehrschluß, das ich erstmal meine Variable "date_start_on" zerpflücken muss, um mir von dort Stunde und Minute zu holen.

Also ich fand es auf den ersten Blick seltsam, bin aber froh das ich jetzt Bescheid weiß.
Nur darum geht es.

Danke :D
BlackJack

@der_Mausbiber: Bei beiden ist `start_date` die ”Untergrenze”. Bei ”interval” ist es gleichzeitig der erste Zeitpunkt, was bei ”cron” nicht funktionieren kann, weil da ja die Bezugspunkte ganz anders gesetzt werden.
der_Mausbiber
User
Beiträge: 72
Registriert: Donnerstag 2. Oktober 2014, 09:51

weil da ja die Bezugspunkte ganz anders gesetzt werden.
Jetzt ist der Groschen bei mir gefallen :wink:
Antworten