首页/数据/数据工程与 ETL 速查/Airflow Sensor 等待与 reschedule 模式

Airflow Sensor 等待与 reschedule 模式

Sensor 是等条件成立的任务:文件出现、上游分区就绪、时间到达等;默认 poke 模式会一直占用执行槽位,长等待建议开 reschedule 模式在轮询之间释放资源。

常见 SensorFileSensor / ExternalTaskSensor / 各系统分区 Sensor
poke 模式按 poke_interval 轮询并占住槽位
reschedule 模式轮询间释放槽位,由调度器再唤醒
超时timeout 到点任务失败

reschedule 用法

reschedule 用法
from airflow.sensors.filesystem import FileSensor

wait_file = FileSensor(
    task_id="wait_file",
    filepath="/data/in/{{ ds }}.done",
    poke_interval=60,
    timeout=60 * 60 * 6,
    mode="reschedule",
)
大量 Sensor 用 poke 模式会把执行槽位占满,导致其它任务排队——长等待统一改 reschedule。

易错点

  • mode 默认是 poke,复制代码时容易漏改
  • 超时时间设得过短,上游晚到就直接失败,凌晨批量场景尤其明显

数据来源与参考

  • Apache Airflow 官方文档:Sensors
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌