2017-11-02 3 views
0

Beim Erstellen eines Airflow dag gebe ich normalerweise einen einfachen Zeitplan an, der regelmäßig ausgeführt werden soll - ich erwarte, dass dies die gebräuchlichste Verwendung ist.Wie kann ich die geplante Zeit für Aufholaufträge in Airflow abrufen?

dag = DAG('my_dag', 
     description='this is what it does', 
     schedule_interval='0 12 * * *', 
     start_date=datetime(2017, 10, 1), 
     catchup=False) 

Ich muss dann das 'Datum' als Parameter in meinem tatsächlichen Prozess verwenden, also überprüfe ich nur das aktuelle Datum.

date = datetime.date.today() 
# do some date-sensitive stuff 
operator = MyOperator(..., params=[date, ...]) 

Mein Verständnis ist, dass catchup=True Einstellung wird Airflow für jeden Zeitplan Intervall zwischen start_date meine dag planen und jetzt (oder end_date); z.B. jeden Tag.

Wie bekomme ich die scheduled_date zur Verwendung in meiner dag-Instanz?

Antwort

1

Ich denke, Sie meinen Ausführungsdatum hier, Sie können Makros innerhalb Ihrer Operatoren verwenden, mehr Details finden Sie hier: https://airflow.apache.org/code.html#macros. So Luftstrom sie respektieren, so müssen Sie nicht über Ihre date dynamisch

Innerhalb von Operator erzeugt worden ist, Sie {{ ds }} in einem str direkt

Außerhalb der Betreiber zum Beispiel PythonOperator aufrufen können, müssen Sie provide_context=True zuerst, dann **kwargs als letzte Argumente zu Ihrer Funktion zu übergeben, dann können Sie anrufen kwargs['ds']

+0

Perfekt. In meinen Augen ist das "Ausführungsdatum" der Zeitpunkt, zu dem die Aufgabe tatsächlich ausgeführt wird, was immer "jetzt" ist, aber das macht Sinn und funktioniert. –

Verwandte Themen