Agendando Dags

Introdução ao Apache Airflow em Python

Mike Metzger

Data Engineer

Dag Runs

  • Uma execução específica de um workflow em um momento
  • Pode rodar manualmente ou via schedule
  • Mantém estado do workflow e das tarefas
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Introdução ao Apache Airflow em Python

Visão de Dag Runs

Página Dag Runs do Airflow listando execuções recentes de todos os Dags

Introdução ao Apache Airflow em Python

Estado dos Dag Runs

Página Dag Runs do Airflow mostrando a coluna de estado de cada execução

Introdução ao Apache Airflow em Python

Detalhes de schedule

Ao agendar um Dag, observe:

  • start_date - Data/hora inicial para agendar o Dag
  • end_date - Opcional; quando parar de criar novas execuções
    • start_date e end_date usam um objeto datetime(year, month, day), por exemplo:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Introdução ao Apache Airflow em Python

Schedule

schedule indica:

  • Com que frequência executar o Dag
  • Entre start_date e end_date
  • Pode ser definido via sintaxe cron, presets embutidos ou timedeltas.
Introdução ao Apache Airflow em Python

Sintaxe cron

Diagrama da sintaxe cron mostrando seus cinco campos de tempo separados por espaço

  • Vem do formato cron do Unix
  • 5 campos separados por espaço
  • * significa executar em todo intervalo (ex.: todo minuto, todo dia)
  • Pode ter valores separados por vírgula em um campo
Introdução ao Apache Airflow em Python

Exemplos de cron

Diagrama da sintaxe cron mostrando seus cinco campos de tempo separados por espaço

0 12 * * *              # Executa diariamente ao meio-dia
* * 25 2 *              # Executa a cada minuto em 25 de fevereiro
0,15,30,45 * * * *      # Executa a cada 15 minutos
Introdução ao Apache Airflow em Python

Presets do scheduler do Airflow

Preset:

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

equivalente cron:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Introdução ao Apache Airflow em Python

Presets especiais

O Airflow tem três presets especiais de schedule:

  • None - Nunca agenda; para Dags acionados manualmente
  • @once - Agenda só uma vez
  • @continuous - Executa assim que a execução anterior termina
Introdução ao Apache Airflow em Python

timedelta

  • Também dá para usar pendulum.duration
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Introdução ao Apache Airflow em Python

Aplicando schedules

  • Schedule definido no Dag
  • Usa o parâmetro schedule:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Introdução ao Apache Airflow em Python

problemas de schedule

Ao agendar um Dag, o Airflow:

  • Exige que um intervalo completo passe após o start_date
  • Agenda em start_date + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

O primeiro horário para executar o Dag é 26 de fevereiro de 2026

Introdução ao Apache Airflow em Python

Vamos praticar!

Introdução ao Apache Airflow em Python

Preparing Video For Download...