Apache Airflow 1.10.2 ist jetzt veröffentlicht und kann mit pip install apache-airflow==1.10.2 installiert werden. Es ist (noch) nicht mit Python 3.7 kompatibel, die letztmögliche Python-Version ist also immer noch 3.6. Auch die Einstellung SLUGIFY_USES_TEXT_UNIDECODE=yes zur Vermeidung der Unidecode-GPL-Abhängigkeit ist weiterhin erforderlich, obwohl daran gearbeitet wird und dies hoffentlich in naher Zukunft nicht mehr erforderlich sein wird.
Über 250 PRs sind in dieser Version enthalten und ich möchte auf einige wichtige Änderungen hinweisen:
- "Freigeben" von Sensoren mit dem Modus
reschedule(PR) - Generischer PythonSensor(PR)
- Verschiedene Leistungsoptimierungen
- RBAC UI mit thematischer Unterstützung(PR)
Lesen Sie das vollständige Changelog hier: airflow-1-10-2-2019-01-19.
Apache Airflow ist jetzt ein Apache TLP
Neben der neuen Version ist es auch erwähnenswert, dass das Apache Airflow Projekt kürzlich vom Inkubator zum TLP (Top Level Project) aufgestiegen ist! Das Projekt hat in den letzten Jahren stark an Zugkraft gewonnen und es kommen täglich viele PRs hinzu.
Freigeben von Sensoren mit reschedule Modus
Dies ist eine sehr wichtige neue Funktion für Benutzer von Airflow, die Sensoren verwenden. Die neue Funktion kann verwendet werden, indem Sie mode="reschedule" in Ihren Sensor-Argumenten. Airflow Worker (der Prozess, der Aufgaben ausführt) haben eine maximale Parallelität, d.h. die maximale Anzahl von Aufgaben, die parallel ausgeführt werden können. Standardmäßig laufen die Sensoren im Modus poke, der einen Worker-Slot blockiert, während er alle X Sekunden darauf wartet, dass eine bestimmte Bedingung erfüllt ist und die Ausführung der nachgelagerten Aufgaben fortsetzt. Wenn Sie mehr Sensoren als verfügbare Worker-Slots haben, kann dies zu einem "Sensor Deadlock" führen, bei dem alle Worker-Slots von Sensoren belegt sind.
Der neue Sensor reschedule Modus "gibt" den Worker-Slot frei, indem er die Aufgabe neu plant und somit den Worker-Slot nicht mehr blockiert. Dies geht mit einem neuen up_for_reschedule Status einher:

Generischer PythonSensor
Es gibt eine Reihe von Sensoren für verschiedene Anwendungsfälle, aber bis jetzt gab es keinen generischen PythonSensor. Genau wie der PythonOperator funktioniert er durch Übergabe eines python_callable Arguments, das alle X Sekunden ausgeführt wird und True oder False zurückgeben sollte. Zum Beispiel:
von datetime importieren datetime importieren Luftstrom von Luftstrom importieren DAG von airflow.contrib.sensors.python_sensor importieren PythonSensor von airflow.operators.bash_operator importieren BashOperator standard_args = {"Eigentümer": "godatadriven", "start_date": Luftstrom.Utensilien.Termine.Tage_vorher(14)} dag = DAG( dag_id="make_coffee", standard_args=standard_args, zeitplan_intervall="0 0 * * *", Beschreibung="Ist es Zeit für einen Kaffee?", ) def Zeit_für_Kaffee(): """Ich trinke Kaffee zwischen 6 und 12""" wenn 6 datetime.jetzt().Stunde 12: return True sonst: return False Zeit_für_Kaffee = PythonSensor( aufgabe_id="zeit_für_kaffee", python_aufrufbar=Zeit_für_Kaffee, Modus="Umplanen", dag=dag, ) kochen_kaffee = BashOperator( aufgabe_id="make_coffee", bash_befehl="echo 'Zeit für einen Kaffee!'", dag=dag, ) Zeit_für_Kaffee >> kochen_kaffee
Verschiedene Leistungsoptimierungen
Es wurden mehrere große Leistungsoptimierungen vorgenommen, z.B.:
- DagBag nur einmal während des Starts lesen(PR)
- Entkopplung der DAG-Parsing-Schleife von der Scheduler-Schleife(PR)
- Der Datenbank wurden mehrere Indizes hinzugefügt(PR, PR, PR)
- Die Methode topological_sort, die Aufgaben in topologischer Reihenfolge auflistet, ist viel schneller(PR)
RBAC UI mit Themen
Und schließlich unterstützt die RBAC-Benutzeroberfläche jetzt Themes durch die Verwendung von FAB(Flask-AppBuilder). Das bedeutet automatisch, dass alle unterstützten Themes auch die sind, die von FAB unterstützt werden, und natürlich können Sie Ihr eigenes Theme hinzufügen.
Um es zu verwenden, stellen Sie APP_THEME = "[theme-name].css" ein (letzte Zeile in webserver_config.py) und wählen Sie eines der hier aufgeführten Themen.
Zum Beispiel:
Yeti
Spacelab
Simplex
Beachten Sie, dass es eine Konfiguration navbar_color gibt, die sich auf das Thema auswirkt, also stellen Sie sie entsprechend ein.
Das sind die Highlights dieser Version. Sprechen Sie uns gerne auf alles an, was mit Airflow zu tun hat!
Wir bieten einen Airflow-Kurs an, in dem Ihnen die Interna, die Terminologie und die besten Praktiken bei der Arbeit mit Airflow beibringt, mit praktischer Erfahrung beim Schreiben und Warten von Datenpipelines.
Unsere Ideen
Weitere Blogs
Contact




