气流任务是指多个先前的任务?

时间:2017-03-27 17:57:38

标签: directed-acyclic-graphs airflow

有没有办法可以让任务完成多个上游任务仍然可以独立完成?

  • download_fcr - > process_fcr - >的 load_fcr
  • download_survey - > process_survey - >的 load_survey

create_dashboard 应该要求load_fcr和load_survey成功完成。

我不想在调查中强行执行任何操作。任务链需要来自“fcr”的任何内容。任务链完成。我希望它们并行处理,即使一个失败也仍然完成。但是,仪表板任务要求在数据库启动之前完成加载到数据库。

fcr *-->*-->*
             \
               ---> create_dashboard
                /
survey *-->*-->*

2 个答案:

答案 0 :(得分:3)

download_fcr.set_downstream(process_fcr)
process_fcr.set_downstream(load_fcr)

download_survey.set_downstream(process_survey)
process_survey.set_downstream(load_survey)

load_survey.set_downstream(create_dashboard)
load_fcr.set_downstream(create_dashboard)

答案 1 :(得分:1)

您可以将任务列表传递给set_upstream或set_downstream。对于您的情况,如果您特别想使用set_upstream,则可以将依赖项描述为:

create_dashboard.set_upstream([load_fcr, load_survey])

load_fcr.set_upstream(process_fcr)
process_fcr.set_upstream(download_fcr)

load_survey.set_upstream(process_survey)
process_survey.set_upstream(download_survey)

看看airflow's source code:即使您仅将一个任务对象传递给set_upstream,它实际上也会在执行任何操作之前在其周围包装一个列表。