Vai al contenuto principale
BlogTrigger e sensori in Apache Airflow
Apache AirflowApache per i Big Data

Trigger e sensori in Apache Airflow

5 Nov 20245 min lettura
SC

Stanislao Corvino

Dottore Commercialista · Data Evangelist

In Apache Airflow, i Trigger e i Sensori sono strumenti potenti per monitorare e reagire a eventi esterni o condizioni specifiche. I sensori attendono che una condizione venga soddisfatta prima di eseguire i task successivi, rendendoli ideali per pipeline event-driven.

Cos'è un Sensor in Airflow

Un Sensor è un tipo speciale di operatore che attende il verificarsi di una condizione. A differenza degli operatori standard che eseguono un'azione e terminano, i sensori "pollingano" periodicamente fino a quando la condizione non è soddisfatta.

Sensori più utilizzati

FileSensor

Attende la comparsa di un file nel filesystem:

file_sensor = FileSensor(
    task_id='wait_for_file',
    filepath='/data/input/daily_export.csv',
    poke_interval=60,  # controlla ogni 60 secondi
    timeout=3600,       # timeout dopo 1 ora
)

HttpSensor

Verifica che un endpoint HTTP restituisca una risposta positiva:

http_sensor = HttpSensor(
    task_id='check_api',
    http_conn_id='my_api',
    endpoint='health',
    response_check=lambda r: r.status_code == 200,
)

SqlSensor

Attende che una query SQL restituisca un risultato non vuoto:

sql_sensor = SqlSensor(
    task_id='wait_for_data',
    conn_id='my_database',
    sql="SELECT COUNT(*) FROM orders WHERE date = '{{ ds }}'",
)

ExternalTaskSensor

Attende il completamento di un task in un altro DAG:

external_sensor = ExternalTaskSensor(
    task_id='wait_for_upstream',
    external_dag_id='upstream_dag',
    external_task_id='final_task',
)

Modalità di Poking

  • poke: il sensore occupa un worker slot mentre attende
  • reschedule: il sensore rilascia il worker slot tra un controllo e l'altro (consigliato)

Deferrable Operators (Airflow 2.2+)

A partire da Airflow 2.2, i Deferrable Operators permettono ai sensori di sospendersi completamente, liberando risorse del worker. Il trigger viene gestito da un processo separato chiamato Triggerer.

Best Practice

  • Usa sempre un timeout per evitare sensori che girano all'infinito
  • Preferisci la modalità reschedule per sensori con tempi di attesa lunghi
  • Usa i Deferrable Operators quando possibile (Airflow 2.2+)
  • Imposta un poke_interval appropriato per non sovraccaricare le risorse

I sensori sono uno strumento fondamentale per costruire pipeline di dati event-driven e reattive.

Tag:
Apache AirflowSensorsTriggers

Articoli correlati