Планирование 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

Страница запусков DAG в Airflow со списком последних запусков по всем DAG

Введение в Apache Airflow на Python

Состояние запусков DAG

Страница запусков DAG в Airflow со столбцом состояния для каждого запуска

Введение в Apache Airflow на Python

Параметры расписания

При планировании DAG важны следующие атрибуты:

  • start_date — дата и время первого запуска DAG
  • 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, встроенные пресеты или timedelta.
Введение в Apache Airflow на Python

Синтаксис cron

Схема синтаксиса cron с пятью полями времени, разделёнными пробелами

  • Формат взят из Unix cron
  • 5 полей, разделённых пробелом
  • * означает запуск для каждого интервала (например, каждую минуту, каждый день)
  • Поля могут содержать несколько значений через запятую
Введение в Apache Airflow на Python

Примеры cron

Схема синтаксиса cron с пятью полями времени, разделёнными пробелами

0 12 * * *              # Run daily at noon
* * 25 2 *              # Run once per minute on February 25
0,15,30,45 * * * *      # Run every 15 minutes
Введение в 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 + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

Ранний возможный запуск DAG — 26 февраля 2026 г.

Введение в Apache Airflow на Python

Давайте потренируемся!

Введение в Apache Airflow на Python

Preparing Video For Download...