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
