Luftstrom, Warum der scheduler nicht starten mein DAG?

Habe ich den folgenden Dag:
Luftstrom, Warum der scheduler nicht starten mein 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.
InformationsquelleAutor jack | 2018-07-01



One Reply
  1. 9

    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.

    • Sorry, aber diese keine Antwort auf meine Frage. Ich bin mir bewusst, dass der Luftstrom Merkmale. Mein code ausführen muss, um am 1. Tag jeden Monats um 10 UHR. Ich geben keine date-argument es ist einfach eine Funktion, die ausgeführt werden muss. Luftstrom mir nicht erlaubt, das zu tun. Es gibt keine cron-Ausdrücke, die sagen können, letzten Tag eines Monats. Sie brauchen, um zu bauen 3 verschiedene cron-Ausdrücke für, die.
    • Ich glaube, du bist Missverständnis der „schedule interval“, Wenn Sie Ihre start-Datum ist 2018-06-01 und Ihr Intervall ist 0 10 1 * * Dann auf 2018-07-01 T 00:10:00 Ihre Ausführung für 2018-06-01 T 00:10:00 starten. crontab.guru/#0_10_1__
    • Ich bin mir nicht sicher, ob ich verstehe. Mein start Datum: ‚Startdatum‘: datetime(2018, 06, 21) Dies ist das Datum, das ich frühstückte der DAG.
    • Also, wenn Sie hatte Ihre 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.
    • Ich glaube nicht, dass das eine gute Entscheidung ihrerseits. Es sollte bis zu dem entwickeln, zu Bedenken, und das Startdatum sollte buchstäblich start der DAG am gleichen Tag als Startdatum Wert. Sie sind das hinzufügen versteckte Komplexität.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.