Uitstelbare operators

Data-pijplijnen bouwen met Airflow

Volker Janz

Senior Developer Advocate at Astronomer

Het sensorprobleem

Sensors bezetten workerslots

 

  • Poke-modus: sensor houdt het workerslot de hele tijd vast
  • Lang draaiende sensors ontzeggen andere taken resources
Data-pijplijnen bouwen met Airflow

Reschedule-modus

Poke-modus (standaard)

from airflow.providers.standard.sensors.filesystem \
    import FileSensor

wait = FileSensor(
    task_id="wait",
    filepath="/data/report.csv",
    mode="poke",
    poke_interval=30,
)
  • Slot de hele tijd bezet

Reschedule-modus

from airflow.providers.standard.sensors.filesystem \
    import FileSensor

wait = FileSensor(
    task_id="wait",
    filepath="/data/report.csv",
    mode="reschedule",
    poke_interval=300,
)
  • Slot vrij tussen checks
Data-pijplijnen bouwen met Airflow

Uitstelbare modus

Uitgestelde sensor afgehandeld door de Triggerer

  • Taak draagt over aan het Triggerer-proces
  • Triggerer gebruikt async I/O voor honderden gelijktijdige waits
  • Nul workerslots gebruikt tijdens het wachten
Data-pijplijnen bouwen met Airflow

Uitstelbaar inschakelen

from airflow.providers.standard.sensors.filesystem import FileSensor

wait_for_data = FileSensor(
    task_id="wait_for_data",
    filepath="/data/incoming/report.csv",

deferrable=True,
poke_interval=30, timeout=3600, )

 

  • poke_interval en timeout blijven van kracht
Data-pijplijnen bouwen met Airflow

Wanneer gebruik je welke modus

Modus Beste voor Workerslot
poke Korte waits (< 1 min) De hele tijd vastgehouden
reschedule Middellange waits, geen Triggerer Vrij tussen checks
deferrable Lange waits, veel sensors Nooit gebruikt

 

  • Als de Triggerer draait, is uitstelbaar bijna altijd de juiste standaard
Data-pijplijnen bouwen met Airflow

Globale uitstelbare instelling

AIRFLOW__OPERATORS__DEFAULT_DEFERRABLE=True

 

  • Alle compatibele operators gebruiken automatisch de uitstelbare modus
  • Geen wijzigingen in je Dag-code nodig
  • Overschrijf per operator met deferrable=False indien nodig
Data-pijplijnen bouwen met Airflow

Laten we oefenen!

Data-pijplijnen bouwen met Airflow

Preparing Video For Download...