Planifier l'exécution d'un DAG

La planification de l'exécution des tâches est l'une des fonctionnalités phares d'Apache Airflow. Elle permet de définir quand et comment vos DAGs (Directed Acyclic Graphs) doivent s'exécuter, rendant vos workflows automatiques et fiables.

Le concept du Cron#

Le cron est un outil natif des systèmes Linux/Unix permettant de planifier l’exécution automatique de tâches (scripts, commandes, programmes) à des moments précis ou à intervalles réguliers.

Ces tâches sont définies dans un fichier appelé crontab (cron table), qui spécifie à quelle minute, heure, jour du mois, mois et jour de la semaine la commande doit être lancée.

Ce système est très utile pour automatiser des routines telles que des sauvegardes, des mises à jour de données, ou l'envoi de rapports.

La syntaxe d'une expression cron est composée de cinq champs obligatoires (minute, heure, jour du mois, mois, jour de la semaine), suivis de la commande à exécuter. Par exemple, 0 2 * * * /path/to/script.sh exécute le script tous les jours à 2h00 du matin.

  • Intervalles : */5 pour toutes les 5 minutes.
  • Plages : 1-5 pour les jours de 1 à 5.
  • Valeurs multiples : 1,15,30 pour déclencher à des moments précis.

Il est également possible d’utiliser des intervalles (*/5 pour toutes les 5 minutes), des plages (1-5) ou des valeurs multiples (1,15,30) pour affiner le déclenchement. Des plateformes comme Apache Airflow reprennent cette logique pour orchestrer les workflows, en la rendant plus flexible et observable.

La planification dans Airflow#

Airflow utilise synthase des crons pour gérer la planification des dags. La fréquence d'exécution d'un DAG est définie par le paramètre schedule_interval. Si vous avez déjà utilisé un cron sur Linux, ce concept vous sera familier. Sinon, pas de panique, nous allons tout expliquer.

Exemple de configuration
Voici comment intégrer la planification dans la définition de votre DAG :

Airflow DAG
dag = DAG(
    dag_id="etl_sales",
    description="Sales ETL",
    default_args=default_args,
    schedule_interval="0 6 * * *",
    tags=["sales", "reporting", "daily", "critical"],
    catchup=False,
    max_active_runs=1,
)

Comprendre la syntaxe#

Pour maîtriser le schedule_interval, il faut comprendre l'ordre des 5 colonnes : La syntaxe du schedule_interval est basée sur le format cron, qui permet de spécifier des exécutions avec précision. Voici la signification des champs :

Champ Valeur Signification
Minute 0-59 Minute exacte
Heure 0-23 Heure exacte
Jour du mois 1-31 Jour du mois
Mois 1-12 Mois
Jour de la semaine 0-6 Dimanche (0) à Samedi (6)

Exemple pour 0 6 * * * :

  • Minute : 0 (pile à l'heure)
  • Heure : 6 (6 heures du matin)
  • Tous les jours du mois
  • Tous les mois
  • Tous les jours de la semaine

Voici un guide visuel pour vous aider à mieux comprendre :

Pour simplifier la création de ces expressions, vous pouvez tester vos expressions sans vous tromper, utilisez l'outil Crontab Guru.

Les raccourcis Airflow#

Parfois, une expression cron est un peu complexe à lire. Airflow propose des "presets" (raccourcis) pour les fréquences les plus courantes :

Valeur Équivalent Cron Signification
@hourly 0 * * * * Chaque heure (à la minute 0)
@daily 0 0 * * * Chaque jour à minuit
@weekly 0 0 * * 0 Chaque dimanche à minuit
@once / Exécuté une seule fois (lors du premier déclenchement)
None / Le DAG n'est jamais lancé automatiquement (manuel uniquement)

Grâce à schedule_interval, vous pouvez automatiser l'exécution de vos workflows selon les besoins de votre projet. Dans la prochaine section, nous verrons comment gérer les dépendances entre les tâches pour structurer vos DAGs de manière optimale.

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue