Планування Dag'ів

Вступ до Apache Airflow на Python

Mike Metzger

Data Engineer

Запуски Dag

  • Конкретний запуск робочого процесу в певний момент часу
  • Може запускатися вручну або через schedule
  • Зберігає стан для кожного робочого процесу та його завдань
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Вступ до Apache Airflow на Python

Подання Dag Runs

Сторінка Airflow Dag Runs зі списком нещодавніх запусків усіх Dag'ів

Вступ до Apache Airflow на Python

Стани Dag Runs

Сторінка Airflow Dag Runs, що показує стовпчик стану кожного запуску

Вступ до Apache Airflow на Python

Деталі розкладу

Плануючи Dag, зверніть увагу на такі атрибути:

  • start_date — дата/час першого планування запуску Dag
  • end_date — необов'язковий атрибут для зупинки нових запусків Dag
    • start_date і end_date використовують об'єкт datetime(year, month, day), наприклад:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Вступ до Apache Airflow на Python

Розклад

schedule визначає:

  • Як часто планувати Dag
  • У проміжку між start_date і end_date
  • Може задаватися синтаксисом cron, вбудованими пресетами або timedeltas.
Вступ до Apache Airflow на Python

синтаксис cron

Схема синтаксису cron з п'ятьма полями, розділеними пробілом

  • З формату Unix cron
  • 5 полів, розділених пробілом
  • * означає запуск на кожному інтервалі (наприклад, щохвилини, щодня)
  • У полях можна вказувати список значень через кому
Вступ до Apache Airflow на Python

приклади cron

Схема синтаксису cron з п'ятьма полями, розділеними пробілом

0 12 * * *              # Щодня опівдні
* * 25 2 *              # Щохвилини 25 лютого
0,15,30,45 * * * *      # Кожні 15 хвилин
Вступ до Apache Airflow на Python

Пресети планувальника Airflow

Пресет:

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

еквівалент cron:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Вступ до Apache Airflow на Python

Спеціальні пресети

У Airflow є три спеціальні пресети schedule:

  • None — ніколи не планувати, для вручну тригерених Dag'ів
  • @once — запланувати один раз
  • @continuous — запускати одразу після завершення попереднього
Вступ до Apache Airflow на Python

timedelta

  • Також можна використовувати pendulum.duration
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Вступ до Apache Airflow на Python

Застосування розкладів

  • Розклад задається на Dag
  • Використовує параметр schedule:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Вступ до Apache Airflow на Python

підводні камені розкладу

Плануючи Dag, Airflow робить так:

  • Після start_date має минути повний інтервал
  • Завдання планується на start_date + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

Найраніший час старту Dag — 26 лютого 2026 року

Вступ до Apache Airflow на Python

Давайте потренуємось!

Вступ до Apache Airflow на Python

Preparing Video For Download...