首页 > 解决方案 > 气流传感器超时时如何执行某些操作

问题描述

我想在气流传感器超时时调用一个方法。Airflow 库是否提供了一个挂钩来执行此类操作?我查看了源代码,AirflowSensorTimeoutException一旦发生超时,它就会抛出。

有没有办法捕捉上述异常或 Sensor 提供的某种钩子来处理超时后的某些操作?

标签: airflow

解决方案


虽然对于特定类型的异常(在您的情况下 - 超时异常)没有简单的选择,但您可以通过添加另一个执行 X 并将trigger_rule='all_failed'参数传递给它的任务来实现这一点,因此该任务仅在父级时运行失败的。

例如:

sensor = FileSensor(
    task_id='sensor',
    filepath='/usr/local/airflow/file',
    timeout=10,
    poke_interval=10,
    dag=dag
)

when_failed = BashOperator(
    task_id='creator',
    bash_command='touch /usr/local/airflow/file',
    trigger_rule='all_failed',
    dag=dag
)

sensor >> when_failed

如果您只想在超时异常上运行,您也可以采用这种方法,方法是使用ShortCircuitOperatortrigger_rule 检查异常是否超时,但这会更复杂。


推荐阅读