完成2个任务后如何设置下游任务

时间:2019-04-11 10:48:56

标签: airflow

我正在并行运行任务(T1和T2)。如何设置取决于T1和T2成功完成的下游任务T3

[T1,T2].set_downstream(T3)

但是,出现以下错误 AttributeError:'list'对象没有属性'set_downstream'

2 个答案:

答案 0 :(得分:0)

您可以采用一些实用的方法来实现任务相关性,Read - Managing Dependencies或仅查看下面的示例。

T1.set_downstream(T3)
T2.set_downstream(T3)

T3.set_upstream([T1, T2])

[T1, T2] >> T3

答案 1 :(得分:0)

如何设置上游下游依赖性:

让我们举个例子:它包含3个任务,因此您可以设置    这样的上游-下游依赖性:

[t1,t2] >> t3

t1 = PythonOperator(
    task_id='t1',
    dag=dag,
    python_callable=call_me,
)

t2 = PythonOperator(
    task_id='push_by_returning',
    dag=dag,
    python_callable=call_me_too(),
)

t3 = PythonOperator(
    task_id='puller',
    dag=dag,
    python_callable=status_chcker,
    trigger_rule="all_done"
)



[t1, t2] >> t3  

如何为下游作业触发器设置条件:

trigger_rule =“ all_done”

有多个触发规则,可根据这些规则触发下游作业。

  • 所有成功:(默认)所有父母都成功

  • 所有失败:所有父母均处于失败或上游失败状态

  • all_done:所有父母都被处决了

  • one_failed:至少有一个父项发生故障时立即触发 不要等待所有父母做完

  • one_success:至少有一个父级成功后就触发 不要等待所有父母做完

  • none_failed:所有父母都没有失败(失败或upstream_failed) 即所有父母都成功或被跳过

  • none_skipped:没有父母处于跳过状态,即所有父母都处于 处于成功,失败或上游失败状态

  • 虚拟:依赖只是为了显示,可以随意触发