iX 11/2023
S. 144
Praxis
Automatisieren mit Python

Daten-Workflows mit Prefect automatisieren

Wer in der Python-Welt regelmäßig Daten abholt, transformiert und wegspeichert, nutzt meist Airflow. Prefect ist ein Herausforderer und bietet einiges mehr beim Debugging und Logging der Tasks.

Von Arnd Scharpegge

Das Tool Prefect dient zum Steuern von Datenübertragungen, macht die Erfolge davon sichtbar und benachrichtigt, wenn etwas einmal nicht funktioniert. Das von ehemaligen Airflow-Mitarbeitern gegründete Prefect erschien erstmals 2018 und macht bereits einen ausgereiften Eindruck – viele Kunden setzen es schon produktiv ein. Die Entwickler bezeichnen es als Workflow Orchestration Platform und meinen damit, dass es alle Arten von aneinandergereihten Aktionen mit Daten abbilden kann. Da es in vielen Fällen darum geht, Daten von A nach B zu übertragen, setzt dieser Artikel Datenflows mit Prefect-Workflows gleich. Ein Flow ist dabei eine festgelegte Abfolge von Arbeitsschritten. Prefect besteht aus einer Datenbank zum Verwalten aller relevanten Informationen, der Prefect-Server-API und dem GUI. All diese Komponenten steuert die Plattform über denselben Prozess. Dazu kommt der Prefect Agent, der prüft, ob ein neuer Lauf eines Workflows gestartet werden soll. Die letzte Kernkomponente ist die Datenbasis zum Speichern der Flows, die man als lokales Dateisystem, AWS-S3-Speicher oder MinIO Object Store einrichten kann. Hier liegen nur die Flow-Anweisungen als Dateien, aber keine Metadaten – die finden sich in der angebundenen Datenbank.

Alle diese Prozesse lassen sich via Docker Compose zusammen starten. Prefect-Workflows können on Premises, in Docker-Containern oder in der Prefect-Cloud laufen. Ein genauer Überblick über die Struktur und Komponenten von Prefect findet sich unter ix.de/z5ee. Dieser Artikel zeigt, wie man Flows entwickelt, debuggt und sie mit Docker Compose zum Laufen bringt.

Kommentieren