Luftstrom, Warum der scheduler nicht starten mein DAG?
Habe ich den folgenden Dag:
Den ersten Dag mit 0 1 * * *
lief ohne Probleme. Das Ende DAG 0 10 1 * *
Nicht ausgeführt wurde.
Wenn ich das mache:
import datetime
print datetime.datetime.now()
Bekomme ich:
2018-07-01 12:14:15.632812
Also ich verstehe nicht, warum diese DAG wurde noch nicht geplant. Ich verstehe, dass es nicht zwingend laufen genau bei 10:00 aber die stat sollte Running
.
Laut der „Letzte Ausführung“ die erste Aufgabe ist 2018-06-30 01:00
ich vermute, dass ich nicht wirklich verstehen Luftstrom Uhr. Aus meiner Sicht ist der Letzte Lauf wurde auf 2018-07-01 01:00
Da lief es heute morgen nicht von gestern.
Edit:
Ich sah, dass dieser Absatz auf die documntation:
„Beachten Sie, dass, wenn Sie eine DAG auf einem schedule_interval von einem Tag, der Lauf gestempelt 2016-01-01 wird, ausgelöst werden bald nach 2016-01-01T23:59. In anderen Worten, der job-Instanz wird gestartet, sobald der Zeitraum erstreckt, beendet ist.“
So Frage ich mich.. soll ich planen alles bis zu einem Tag vor dem tatsächlichen Datum, die ich will?
Also, Wenn ich wirklich wollen, etwas zu laufen 0 10 1 * *
sollte ich einplanen 0 10 30 * *
? In anderen Worten, wenn ich etwas zu laufen, am 1. jedes Monats um 10:00 sollte ich einplanen, um den letzten Tag des Monats um 10:00 ?
Wo ist die Logik darin? Das ist sehr schwer zu verstehen und zu befolgen.
Wird es am schlimmsten, Nach diese Es gibt keine Möglichkeit zu sagen, der scheduler diesen input. Was soll ich tun?!
- Was ist dein Startdatum jack?
- Denn Luftzirkulation ist Scheiße. Verwenden Sie es nicht. Es ist tödlich entwickelt, von Anfang an.
Luftstrom Zeitpläne, Aufgaben zu den ENDE ein Intervall. Dies kann ein wenig Zähler intuitive, aber basiert auf der Idee, dass die Daten für eine bestimmte Zeitperiode nicht verfügbar, bis das Intervall vorbei ist.
Angenommen Sie haben einen workflow, der soll jeden Tag laufen. Man kann nicht alle Daten für gestern, bis dieser Tag vorbei ist (heute).
In deinem Fall würde es Sinn machen, dass die ersten DAG der letzten Ausführung ist für gestern, da war die „execution_date“ zugeordnet, die DagRun – Ihre DAG lief heute für die gestrigen Daten.
Wenn Sie möchten, dass Ihre DAG-laufen am 1. eines jeden Monats, als die änderung des Zeitplans ist keine schlechte Idee. Allerdings, wenn Sie möchten, dass Ihre DAG ausführen, für die Daten für das 1. jeden Monats (d.h. pass, der das Datum in eine API-Anforderung oder eine SQL-Abfrage), dann haben Sie die richtige.
2018-06-01
und Ihr Intervall ist0 10 1 * *
Dann auf2018-07-01 T 00:10:00
Ihre Ausführung für2018-06-01 T 00:10:00
starten. crontab.guru/#0_10_1_start_date
als Ende Juni und haben das Intervall eingestellt, um laufen jeden Monat, es wird auf den ersten Tag des Juli, wie das ist, wenn das Intervall (monatlich, beginnend im Juni) abgeschlossen haben.