Ertelenebilir operatörler

Airflow ile Veri İş Hatları Oluşturma

Volker Janz

Senior Developer Advocate at Astronomer

Sensör sorunu

İşçi slotlarını meşgul eden sensörler

 

  • Poke modu: sensör işçi slotunu baştan sona tutar
  • Uzun süre çalışan sensörler diğer görevleri aç bırakır
Airflow ile Veri İş Hatları Oluşturma

Reschedule modu

Poke modu (varsayılan)

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

wait = FileSensor(
    task_id="wait",
    filepath="/data/report.csv",
    mode="poke",
    poke_interval=30,
)
  • Slot tüm süre boyunca meşgul

Reschedule modu

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

wait = FileSensor(
    task_id="wait",
    filepath="/data/report.csv",
    mode="reschedule",
    poke_interval=300,
)
  • Kontroller arasında slot boşalır
Airflow ile Veri İş Hatları Oluşturma

Ertelenebilir mod

Tetikleyici tarafından yönetilen ertelenmiş sensör

  • Görev, işi Triggerer sürecine devreder
  • Triggerer, yüzlerce eşzamanlı bekleme için async I/O kullanır
  • Bekleme sırasında sıfır işçi slotu kullanılır
Airflow ile Veri İş Hatları Oluşturma

Ertelenebilirliği etkinleştirme

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 ve timeout yine geçerlidir
Airflow ile Veri İş Hatları Oluşturma

Hangi modu ne zaman kullanmalı

Mod En uygun İşçi slotu
poke Kısa beklemeler (< 1 dk) Tüm süre tutulur
reschedule Orta bekleme, Triggerer yok Kontroller arasında boşalır
deferrable Uzun bekleme, çok sayıda sensör Hiç kullanılmaz

 

  • Triggerer çalışıyorsa, ertelenebilir neredeyse her zaman doğru varsayılandır
Airflow ile Veri İş Hatları Oluşturma

Genel ertelenebilir ayarı

AIRFLOW__OPERATORS__DEFAULT_DEFERRABLE=True

 

  • Uyumlu tüm operatörler otomatik olarak ertelenebilir modu kullanır
  • Dag kodunda değişiklik gerekmez
  • Gerekirse operatör bazında deferrable=False ile geçersiz kıl
Airflow ile Veri İş Hatları Oluşturma

Hadi pratik yapalım!

Airflow ile Veri İş Hatları Oluşturma

Preparing Video For Download...