气流:超时后如何将ExternalTask​​Sensor操作员标记为成功

时间:2019-05-02 14:47:12

标签: python airflow

我有一个A字符,它正在等待其他BC字符中的其他运算符下载数据,然后对其进行计算。

对于某些在BC中处于运算符状态的运算符来说,它花费的时间太长,我想继续使用,而不用“挂起”运算符并使用我到目前为止收到的任何数据。

因此,我有一个超时时间,我想在给定的超时时间后将我的ExternalTaskSensor标记为成功。
我该怎么办?

# dag A:

wait_for_task_1 = ExternalTaskSensor(
    task_id='wait_B_task_1',
    external_dag_id='B',
    external_task_id='task_1',
    dag=dag,
    timeout=(4 * 3600) # After 4 hours, I want to continue A "as is"
)

1 个答案:

答案 0 :(得分:1)

目前尚无法实现,但是您可以对直接依赖于trigger_rule='all_done'的任务设置wait_for_task_1

示例:

wait_for_task_1 = ExternalTaskSensor(
    task_id='wait_B_task_1',
    external_dag_id='B',
    external_task_id='task_1',
    dag=dag,
    timeout=(4 * 3600) # After 4 hours, I want to continue A "as is"
)

task_2 = DummyOperator(task_id='task_2', trigger_rule='all_done', dag=dag)

wait_for_task_1 >> task_2

这将允许下游任务运行,即使该任务已失败。 所有任务的默认trigger_ruleall_success

文档:https://airflow.apache.org/concepts.html#trigger-rules