it-swarm.com.de

Auslösen einer Airflow-DAG vom Terminal aus funktioniert nicht

Ich versuche, den Luftstrom zu verwenden, um einen bestimmten Workflow zu definieren, den ich manuell über die Befehlszeile auslösen möchte. 

Ich erstelle die DAG und füge ein paar Aufgaben hinzu.

dag = airflow.DAG(
    "DAG_NAME",
    start_date=datetime(2015, 1, 1),
    schedule_interval=None,
    default_args=args)

Ich laufe dann im Terminal

airflow trigger_dag DAG_NAME

und nichts passiert. Der Scheduler läuft in einem anderen Thread. Jede Richtung wird sehr geschätzt. Danke dir

17
amustafa

Ich bin gerade auf das gleiche Problem gestoßen. 

Angenommen, Sie können Ihre Dag in airflow list_dags oder über den Webserver sehen:

Ich musste nicht nur das Dag in der Web-Benutzeroberfläche aktivieren, sondern musste auch sicherstellen, dass airflow scheduler als separater Prozess ausgeführt wurde.

Nachdem ich den Scheduler gestartet hatte, konnte ich meinen Tag erfolgreich mit airflow trigger_dag <dag_id> ausführen.

Meine Dag-Konfiguration unterscheidet sich nicht wesentlich von Ihrer. Ich habe auch schedule_interval=None

27
neolytics

Möglicherweise haben Sie den Workflow inaktiviert, um den Workflow manuell zu aktivieren. Öffnen Sie den Airflow-Webserver mit 

$ airflow webserver -p 8080

Gehen Sie zu http: // localhost: 8080 . Sie sollten die Liste aller verfügbaren Dags anzeigen, wobei ein Umschaltknopf ein-/ausgeschaltet ist. Standardmäßig ist alles deaktiviert. Suchen Sie nach Ihrem Tag und schalten Sie Ihren Workflow um. Versuchen Sie nun, den Workflow vom Terminal aus zu starten. Es sollte jetzt klappen.

8
sidd607

stellen Sie zunächst sicher, dass Ihre Datenbankverbindungszeichenfolge für den Luftstrom funktioniert, ob auf Postgres, SQLite (standardmäßig) oder einer anderen Datenbank. Führen Sie dann den Befehl aus

 airflow initdb

Dieser Befehl sollte keine Verbindungsfehler anzeigen 

Stellen Sie zweitens sicher, dass Ihr Webserver in einem separaten Thread ausgeführt wird

airflow webserver

Führen Sie dann Ihren schdeuler in einem anderen Thread aus 

airflow scheduler

Lösen Sie schließlich Ihr Dag in einem anderen Thread aus, nachdem der Scheduler ausgeführt wurde

airflow trigger_dag dag_id

Stellen Sie außerdem sicher, dass der Tag und der Task in der Dag- und Task-Liste vorhanden sind

airflow list_dags
airflow list_tasks dag_id

Und wenn der Tag in Ihrer Benutzeroberfläche ausgeschaltet ist, schalten Sie ihn ein.

3
Anmol Karki

Sie sollten das Ziehen, das Sie auslösen möchten, "aufheben". verwenden airflow unpause xxx_drag und dann airflow trigger_dag xxx_drag und es sollte funktionieren.

0
Eden Wang

Stellen Sie außerdem sicher, dass die DAG selbst in der Benutzeroberfläche eingeschaltet ist. 

0
ilana917