Planifier les Dags

Introduction à Apache Airflow en Python

Mike Metzger

Data Engineer

Exécutions de Dag

  • Une instance précise d'un flux de travail à un moment donné
  • Peut s'exécuter manuellement ou via schedule
  • Tient l'état de chaque flux et de ses tâches
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Introduction à Apache Airflow en Python

Vue des exécutions de Dag

Page Airflow Dag Runs listant les exécutions récentes pour tous les Dags

Introduction à Apache Airflow en Python

État des exécutions de Dag

Page Airflow Dag Runs montrant la colonne d'état pour chaque exécution

Introduction à Apache Airflow en Python

Détails de l'horaire

Lors de la planification d'un Dag, retenez :

  • start_date - Date/heure de la première planification de l'exécution
  • end_date - Optionnel, quand arrêter de créer de nouvelles instances
    • start_date et end_date utilisent un objet datetime(year, month, day), par exemple :
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Introduction à Apache Airflow en Python

Horaire

schedule représente :

  • La fréquence de planification du Dag
  • Entre start_date et end_date
  • Peut être défini avec la syntaxe cron, des préréglages intégrés ou des timedeltas.
Introduction à Apache Airflow en Python

Syntaxe cron

Schéma de la syntaxe cron montrant ses cinq champs temporels séparés par des espaces

  • Issu du format cron Unix
  • 5 champs séparés par un espace
  • * signifie à chaque intervalle (p. ex., chaque minute, chaque jour)
  • Des valeurs séparées par des virgules dans un champ forment une liste
Introduction à Apache Airflow en Python

Exemples cron

Schéma de la syntaxe cron montrant ses cinq champs temporels séparés par des espaces

0 12 * * *              # Exécuter chaque jour à midi
* * 25 2 *              # Exécuter chaque minute le 25 février
0,15,30,45 * * * *      # Exécuter toutes les 15 minutes
Introduction à Apache Airflow en Python

Préréglages du planificateur Airflow

Préréglage :

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

Équivalent cron :

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Introduction à Apache Airflow en Python

Préréglages spéciaux

Airflow offre trois préréglages schedule spéciaux :

  • None - Ne jamais planifier, pour des Dags lancés manuellement
  • @once - Planifier une seule fois
  • @continuous - Démarrer dès que l'exécution précédente se termine
Introduction à Apache Airflow en Python

timedelta

  • Peut aussi utiliser pendulum.duration
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Introduction à Apache Airflow en Python

Appliquer des horaires

  • Horaire défini sur le Dag
  • Utilise le paramètre schedule :
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Introduction à Apache Airflow en Python

Problèmes d'horaire

Lors de la planification d'un Dag, Airflow :

  • Exige qu'un intervalle complet s'écoule après la date de début
  • Programme la tâche à start_date + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

L'heure la plus hâtive pour lancer le Dag est le 26 février 2026

Introduction à Apache Airflow en Python

Passons à la pratique !

Introduction à Apache Airflow en Python

Preparing Video For Download...