有没有办法可以让任务完成多个上游任务仍然可以独立完成?
create_dashboard 应该要求load_fcr和load_survey成功完成。
我不想在调查中强行执行任何操作。任务链需要来自“fcr”的任何内容。任务链完成。我希望它们并行处理,即使一个失败也仍然完成。但是,仪表板任务要求在数据库启动之前完成加载到数据库。
fcr *-->*-->*
\
---> create_dashboard
/
survey *-->*-->*
答案 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,它实际上也会在执行任何操作之前在其周围包装一个列表。