Airflow ExternalTask​​Sensor 执行超时

Via*_*mov 4 airflow

我正在使用airflow.operators.sensors.ExternalTaskSensor让一个 Dag 等待另一个。

dag = DAG(
    'dag2',
    default_args={
        'owner': 'Me',
        'depends_on_past': False,
        'start_date': start_datetime,
        'email': ['me@example.com'],
        'email_on_failure': True,
        'email_on_retry': False,
        'retries': 2,
        'retry_delay': timedelta(minutes=10),
    },
    template_searchpath="%s/me/resources/" % DAGS_FOLDER,
    schedule_interval="{} {} * * *".format(minute, hour),
    max_active_runs=1
)

wait_for_dag1 = ExternalTaskSensor(
    task_id='wait_for_dag1',
    external_dag_id='dag1',
    external_task_id='dag1_task1',
    dag=dag
)
Run Code Online (Sandbox Code Playgroud)

如果上游 Dag 发生严重错误并且在给定时间段内无法完成,我希望上游 Dag(ExternalTask​​Sensor 运算符)也崩溃,而不是永远挂起。

如何向 ExternalTask​​Sensor 添加超时?

我正在查看文档,但它似乎没有timeout参数或类似的东西。我该怎么办?
https://airflow.readthedocs.io/en/stable/_modules/airflow/sensors/external_task_sensor.html

小智 7

ExternalTaskSensor确实需要timeout在几秒钟的说法。它从BaseSensorOperator( https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/sensors/base/index.html )继承参数。如果timeout=60在实例化时传递它,它将在 60 秒后失败。