Plánování Dagů

Úvod do Apache Airflow v Pythonu

Mike Metzger

Data Engineer

Spuštění Dagu

  • Konkrétní instance pracovního postupu v daném čase
  • Lze spustit ručně nebo pomocí schedule
  • Uchovává stav každého pracovního postupu a jeho úloh
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Úvod do Apache Airflow v Pythonu

Zobrazení Dag Runs

Stránka Dag Runs v Airflow se seznamem posledních běhů všech Dagů

Úvod do Apache Airflow v Pythonu

Stav Dag Runs

Stránka Dag Runs v Airflow zobrazující sloupec stavu každého běhu

Úvod do Apache Airflow v Pythonu

Podrobnosti plánování

Při plánování Dagu jsou důležité tyto atributy:

  • start_date – Datum/čas prvního naplánování běhu Dagu
  • end_date – Volitelný atribut pro zastavení nových instancí Dagu
    • start_date i end_date používají objekt datetime(year, month, day), například:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Úvod do Apache Airflow v Pythonu

Plánování

schedule určuje:

  • Jak často plánovat Dag
  • Mezi start_date a end_date
  • Lze definovat pomocí syntaxe cron, předvoleb nebo timedelta.
Úvod do Apache Airflow v Pythonu

Syntaxe cron

Diagram syntaxe cron zobrazující pět časových polí oddělených mezerou

  • Formát z Unix cron
  • 5 polí oddělených mezerou
  • * znamená spuštění v každém intervalu (každou minutu, každý den)
  • V polích lze použít hodnoty oddělené čárkou
Úvod do Apache Airflow v Pythonu

Příklady cron

Diagram syntaxe cron zobrazující pět časových polí oddělených mezerou

0 12 * * *              # Run daily at noon
* * 25 2 *              # Run once per minute on February 25
0,15,30,45 * * * *      # Run every 15 minutes
Úvod do Apache Airflow v Pythonu

Předvolby plánovače Airflow

Předvolba:

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

Ekvivalent cron:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Úvod do Apache Airflow v Pythonu

Speciální předvolby

Airflow má tři speciální předvolby schedule:

  • None – Nikdy neplánovat, pro ručně spouštěné Dagy
  • @once – Naplánovat pouze jednou
  • @continuous – Spustit ihned po dokončení předchozího běhu
Úvod do Apache Airflow v Pythonu

timedelta

  • Lze také použít pendulum.duration
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Úvod do Apache Airflow v Pythonu

Použití plánování

  • Plánování definované na Dagu
  • Používá parametr schedule:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Úvod do Apache Airflow v Pythonu

Problémy s plánováním

Při plánování Dagu Airflow:

  • Musí uplynout celý interval po datu zahájení
  • Naplánuje úlohu na start_date + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

Nejdřívější čas spuštění Dagu je 26. února 2026

Úvod do Apache Airflow v Pythonu

Pojďme si procvičit!

Úvod do Apache Airflow v Pythonu

Preparing Video For Download...