Ich verstehe anscheinend nicht, wie man Module in eine Apache Airflow DAG Definitionsdatei importiert. Ich möchte dies tun, um eine Bibliothek erstellen zu können, die zum Beispiel Aufgaben mit ähnlichen Einstellungen weniger ausführlich erklärt.Apache Airflow DAG kann kein lokales Modul importieren
Hier ist das einfachste Beispiel, das ich mir vorstellen kann, das das Problem repliziert: Ich änderte das Luftstrom-Tutorial (https://airflow.apache.org/tutorial.html#recap), um einfach ein Modul zu importieren und eine Definition von diesem Modul auszuführen. Wie so:
Verzeichnisstruktur:
- dags/
-- __init__.py
-- lib.py
-- tutorial.py
tutorial.py:
"""
Code that goes along with the Airflow located at:
http://airflow.readthedocs.org/en/latest/tutorial.html
"""
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
# Here is my added import
from lib import print_double
# And my usage of the imported def
print_double(2)
## -- snip, because this is just the tutorial code,
## i.e., some standard DAG defintion stuff --
print_double
ist nur eine einfache def die vervielfacht, was Eingang geben Sie es mit 2, und druckt das Ergebnis, aber Das spielt natürlich keine Rolle, denn dies ist ein Importproblem.
Ich bin in der Lage, airflow test tutorial print_date 2015-06-01
wie in der Anleitung docs erfolgreich ausgeführt - der dag läuft, und darüber hinaus ist der print_double erfolgreich. 4
wird wie erwartet auf die Konsole gedruckt. Alles erscheint gut.
Dann gehe ich die Web-UI, und werde von Broken DAG: [/home/airflow/airflow/dags/tutorial.py] No module named 'lib'
begrüßt. Das Deaktivieren der Zeitmarke und das Ausführen eines manuellen Laufs mithilfe der Benutzeroberfläche führt zu einem Status "ausgeführt", der jedoch nie erfolgreich ist oder fehlschlägt. Es sitzt einfach auf "rennt" für immer. Ich kann so viele anstellen, wie ich möchte, aber sie sitzen alle nur im "Running" -Status.
Ich habe die Luftstrom-Protokolle überprüft und sehe dort keine nützlichen Debug-Informationen.
Was bin ich dabei?
getestet in meinem lokalen und es funktionierte; Bist du sicher, dass du die Dateien im richtigen Verzeichnis hast? Könntest du eine tutorial.py-Datei bearbeiten, die sich nicht wirklich im dag-Ordner befindet? der weg sieht zwielichtig aus mit den zwei "luftströmungen" da: '/ home/luftstrom/luftstrom/dags/tutorial.py' – listik
ich habe den kontext von diesem problem abgeschaltet, aber ich werde versuchen einen total frischen luftstrom einzubauen a vm und versuchen, wieder zu replizieren, wenn ich eine Chance bekomme. Allerdings kann ich bestätigen, dass "airflow" der Benutzername ist und "airflow/airflow" ist das Installationsverzeichnis, also ist zumindest dieser Teil nicht das Problem. Ich kann auch nur durch 'cd' in das Verzeichnis bestätigen, dass die Verzeichnisstruktur wie in der Frage gepostet wird. Aber ich werde meine Due Diligence machen und das Ganze in einer isolierten Umgebung nachbilden, da Sie sagen, dass es für Sie funktioniert. – fildred13