Vue d'ensemble

Apache Airflow 2.2, publie le 12 octobre 2021, introduit les timetables personnalises et les operateurs deferrables pour une orchestration plus flexible.

Fonctionnalites principales

Timetables personnalises

Les Timetable personnalises remplacent les expressions cron pour les planifications complexes : jours feries, calendriers boursiers ou intervalles irreguliers.

python
from airflow import DAG
from airflow.operators.empty import EmptyOperator
from datetime import datetime

# DAG avec timetable personnalise
with DAG(
    dag_id='pipeline_quotidien',
    start_date=datetime(2021, 10, 1),
    schedule='@daily',  # ou timetable personnalise
    catchup=False,
) as dag:
    debut = EmptyOperator(task_id='debut')
    traitement = EmptyOperator(task_id='traitement')
    fin = EmptyOperator(task_id='fin')

    debut >> traitement >> fin

Operateurs deferrables

Les operateurs deferrables liberent le worker pendant l'attente d'un evenement externe (fichier, API, capteur), reduisant la consommation de ressources du cluster.

python
from airflow.sensors.base import BaseSensorOperator
from airflow.triggers.temporal import TimeDeltaTrigger
from datetime import timedelta

class CapteurDeferrable(BaseSensorOperator):
    """Capteur qui libere le worker en attendant."""

    def execute(self, context):
        if not self.condition_remplie():
            self.defer(
                trigger=TimeDeltaTrigger(timedelta(minutes=5)),
                method_name='verifier',
            )

    def verifier(self, context, event=None):
        if not self.condition_remplie():
            self.defer(
                trigger=TimeDeltaTrigger(timedelta(minutes=5)),
                method_name='verifier',
            )

    def condition_remplie(self):
        return True  # logique de verification

Sources