Back

Scheduler e gestione del tempo in Apache Airflow

In Apache Airflow, lo Scheduler è il componente responsabile della pianificazione e dell’esecuzione dei DAG. Imparare a gestire correttamente lo scheduler ti aiuterà a orchestrare i tuoi flussi di lavoro in modo efficiente, garantendo che i task vengano eseguiti nei momenti giusti. In questo articolo, ti mostrerò come funziona lo scheduler di Airflow e come gestire il tempo nelle tue pipeline.

Cos’è lo Scheduler in Apache Airflow?

Lo Scheduler di Apache Airflow è un processo che si occupa di monitorare i DAG definiti e pianificare l’esecuzione dei task. Una volta configurato un DAG con un intervallo di esecuzione, lo scheduler si assicura che i task vengano eseguiti nei tempi stabiliti. Lo scheduler analizza il DAG e, in base alla pianificazione, avvia i task necessari rispettando le dipendenze definite.

Pianificare i DAG in Apache Airflow

Per configurare la pianificazione dei DAG, è necessario utilizzare il parametro schedule_interval. Questo parametro definisce ogni quanto tempo il DAG deve essere eseguito. Airflow offre diverse opzioni per configurare la pianificazione:

  • @daily: esegue il DAG una volta al giorno.
  • @hourly: esegue il DAG una volta all’ora.
  • @weekly: esegue il DAG una volta alla settimana.
  • cron: permette di configurare intervalli personalizzati con la sintassi cron.

Utilizzare schedule_interval con cron

La sintassi cron è molto potente e ti permette di pianificare l’esecuzione dei DAG in modo flessibile. Ecco un esempio di come utilizzare cron per eseguire un DAG ogni lunedì alle 8 del mattino:

dag = DAG(
    'dag_cron_example',
    default_args=default_args,
    schedule_interval='0 8 * * 1'
)

In questo esempio, il DAG viene eseguito ogni lunedì (il primo giorno della settimana) alle 8:00. Con cron, puoi pianificare esecuzioni complesse basate su minuti, ore, giorni della settimana, del mese e altro ancora.

Start Date e End Date: gestire l’inizio e la fine dell’esecuzione

Oltre a schedule_interval, puoi definire parametri importanti come start_date e end_date per gestire l’inizio e la fine della validità di un DAG.

  • start_date: indica quando il DAG deve essere eseguito per la prima volta. Se imposti una data nel passato, Airflow tenterà di eseguire tutte le esecuzioni mancanti a partire da quella data.
  • end_date: indica fino a quando il DAG può essere eseguito. Dopo questa data, il DAG non verrà più eseguito.

Impostare correttamente queste date è fondamentale per garantire che i flussi di lavoro vengano eseguiti quando necessario e che eventuali task in ritardo vengano gestiti correttamente.

Ritardi e gestione delle esecuzioni

Un’altra funzionalità importante dello scheduler di Airflow è la gestione dei ritardi (delays). Se un DAG non viene eseguito al momento pianificato (ad esempio, per problemi di sistema), Airflow tenterà di recuperare e avviare i task non eseguiti. Questo è possibile grazie al concetto di catchup, che può essere abilitato o disabilitato in base alle tue esigenze.

dag = DAG(
    'catchup_example',
    default_args=default_args,
    schedule_interval='@daily',
    catchup=False
)

Nell’esempio sopra, il parametro catchup=False impedisce ad Airflow di eseguire i task in ritardo, garantendo che il DAG venga eseguito solo a partire dal momento corrente.

Visualizzazione di un DAG in Apache Airflow

Monitorare lo stato dei DAG

Una volta che un DAG è stato pianificato e avviato, puoi monitorare lo stato dei task tramite l’interfaccia web di Airflow. Qui troverai una rappresentazione visiva dei task eseguiti, i log dettagliati e la possibilità di eseguire azioni come il retry in caso di fallimento.

Conclusione

Lo Scheduler di Apache Airflow è uno strumento potente per pianificare e monitorare l’esecuzione dei flussi di lavoro. Grazie alla sua flessibilità, puoi gestire con precisione l’esecuzione dei tuoi task, gestire eventuali ritardi e monitorare ogni dettaglio attraverso l’interfaccia web di Airflow.

Fonte: Documentazione ufficiale di Apache Airflow

Per altri tutorial, visita la sezione: Tutti gli articoli