Apache Luftstrom DAG nicht importieren lokale Modul

Scheine ich nicht zu verstehen, wie Sie import-Module in apache Luftstrom DAG-definition-Datei. Ich würde mir wünschen, dies tun zu können, erstellen Sie eine Bibliothek, die macht das deklarieren von Aufgaben mit ähnlichen Einstellungen weniger ausführlich, zum Beispiel.

Hier ist das einfachste Beispiel, das ich denken kann, die repliziert das Problem: ich veränderte den Luftstrom tutorial ( https://airflow.apache.org/tutorial.html#recap ), einfach importieren Sie ein Modul, und führen Sie eine definition von diesem Modul. Etwa so:

Verzeichnis-Struktur:

- 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 multipliziert, was input, den Sie geben es durch 2, und druckt das Ergebnis, aber offensichtlich ist das auch egal, denn dies ist ein import-Problem.

Ich bin in der Lage zu laufen airflow test tutorial print_date 2015-06-01 als pro das tutorial docs erfolgreich - die dag läuft, und darüber hinaus ist der print_double gelingt. 4 wird auf der Konsole ausgegeben, als erwartet. Alles erscheint gut.

Dann gehe ich ins web-UI und bin begrüßt Broken DAG: [/home/airflow/airflow/dags/tutorial.py] No module named 'lib'. Unpausing der dag und der Versuch, eine manuelle Ausführung über die Benutzeroberfläche wird ein "running" - status, aber es nie gelingt oder fehlschlägt. Er sitzt nur auf "laufen" immer. Ich kann die Warteschlange so viele, wie ich möchte, aber Sie werden alle sitzen nur auf "läuft" - status.

Ich habe die airflow-Protokolle, und nicht sehen, jede nützliche debug-Informationen.

So was bin ich?

  • getestet diese in meinem lokalen-und es funktionierte; Sie sind sicher, dass Sie die Dateien im richtigen Verzeichnis? konnte Sie Bearbeiten tutorial.py Datei, die es nicht wirklich in der dag-Ordner? der Pfad sieht dodgy mit den beiden "Luftstrom"'s gibt: /home/airflow/airflow/dags/tutorial.py
  • Ich habe Kontext abgeschaltet dieses problem, aber ich werde versuchen ein völlig Frischluftstrom installiert in einer vm, und versuchen Sie erneut replizieren, wenn ich eine chance bekomme. Allerdings kann ich bestätigen, dass airflow ist der Benutzername und das airflow/airflow ist das Installationsverzeichnis, so dass zumindest ein Teil ist nicht das Problem. Ich kann auch bestätigen, nur durch cding in dir, dass die Verzeichnis-Struktur ist wie gepostet in die Frage. Aber ich werde mein due diligence und replizieren die ganze Sache in einer isolierten Umgebung, da Sie sagen, es funktioniert für Sie.
InformationsquelleAutor fildred13 | 2017-12-27
Schreibe einen Kommentar