Planowanie Dagów

Wprowadzenie do Apache Airflow w Pythonie

Mike Metzger

Data Engineer

Uruchomienia Daga

  • Konkretna instancja przepływu pracy w danym momencie
  • Można uruchomić ręcznie lub przez schedule
  • Przechowuje stan przepływu i jego zadań
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Wprowadzenie do Apache Airflow w Pythonie

Widok uruchomień Daga

Strona uruchomień Daga w Airflow z listą ostatnich przebiegów wszystkich Dagów

Wprowadzenie do Apache Airflow w Pythonie

Stan uruchomień Daga

Strona uruchomień Daga w Airflow z kolumną stanu każdego przebiegu

Wprowadzenie do Apache Airflow w Pythonie

Szczegóły harmonogramu

Podczas planowania Daga należy zwrócić uwagę na kilka atrybutów:

  • start_date — data/godzina pierwszego zaplanowanego uruchomienia Daga
  • end_date — opcjonalny atrybut określający koniec tworzenia nowych instancji Daga
    • Oba atrybuty używają obiektu datetime(year, month, day), np.:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Wprowadzenie do Apache Airflow w Pythonie

Harmonogram

schedule określa:

  • Jak często planować Dag
  • W zakresie między start_date a end_date
  • Można definiować składnią cron, wbudowanymi presetami lub timedelta.
Wprowadzenie do Apache Airflow w Pythonie

Składnia cron

Diagram składni cron z pięcioma polami oddzielonymi spacją

  • Format cron z systemu Unix
  • 5 pól oddzielonych spacją
  • * oznacza uruchamianie przy każdym interwale (np. każda minuta, każdy dzień)
  • Pola mogą zawierać wartości rozdzielone przecinkami
Wprowadzenie do Apache Airflow w Pythonie

Przykłady cron

Diagram składni cron z pięcioma polami oddzielonymi spacją

0 12 * * *              # Run daily at noon
* * 25 2 *              # Run once per minute on February 25
0,15,30,45 * * * *      # Run every 15 minutes
Wprowadzenie do Apache Airflow w Pythonie

Presety harmonogramu Airflow

Preset:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

Odpowiednik cron:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Wprowadzenie do Apache Airflow w Pythonie

Specjalne presety

Airflow ma trzy specjalne presety schedule:

  • None — brak harmonogramu; używane dla Dagów wyzwalanych ręcznie
  • @once — jednorazowe zaplanowanie
  • @continuous — uruchamianie natychmiast po zakończeniu poprzedniego przebiegu
Wprowadzenie do Apache Airflow w Pythonie

timedelta

  • Można również użyć pendulum.duration
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Wprowadzenie do Apache Airflow w Pythonie

Stosowanie harmonogramów

  • Harmonogram zdefiniowany w Dagu
  • Używa parametru schedule:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Wprowadzenie do Apache Airflow w Pythonie

Problemy z harmonogramem

Podczas planowania Daga Airflow:

  • Wymaga upłynięcia pełnego interwału po dacie startowej
  • Planuje zadanie na start_date + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

Najwcześniejszy termin uruchomienia Daga to 26 lutego 2026

Wprowadzenie do Apache Airflow w Pythonie

Czas na ćwiczenia!

Wprowadzenie do Apache Airflow w Pythonie

Preparing Video For Download...