目前,我有一个由4个运算符组成的DAG,如下所示:
with DAG('dag', default_args=args, schedule_interval=schedule_interval, catchup=True) as dag:
main_dag = PythonOperator(
task_id='1',
python_callable=func,
provide_context=True,
dag=dag)
run_after_main_dag_1 = PythonOperator(
task_id='1',
python_callable=foo,
provide_context=True,
dag=dag)
run_after_main_dag_2 = BranchPythonOperator(
task_id='2',
python_callable=foo,
provide_context=True)
run_after_main_dag_2_2 = PythonOperator(
task_id='3',
python_callable=foo,
provide_context=False,
dag=dag)
#this runs sequential, but shouldn't.
main_dag >> run_after_main_dag_1 >> run_after_main_dag_2 >> run_after_main_dag_2_2
这就是我想要实现的目标:
运行main_dag
运算符
main_dag
完成后,请并行启动run_after_main_dag_1
和run_after_main_dag_2
,因为它们并不相互独立。
我只是在任何地方的文档中都找不到如何实现此目标的方法。我必须完全忽略一种简单的语法。
有人知道如何实现它吗?
答案 0 :(得分:1)
所以有一个简单的答案:
main_dag >> run_after_main_dag_1
main_dag >> run_after_main_dag_2 >> run_after_main_dag_2_2
答案 1 :(得分:0)
在气流中>>
和<<
用于设置下游和上游依存关系。
您编码
main_dag >> run_after_main_dag_1 >> run_after_main_dag_2 >> run_after_main_dag_2_2 #sequentially
实际上,它定义了随着run_after_main_dag_1
的上游设置为main_dag
依次运行的关系,依此类推。
为了分隔run_after_main_dag_1
和run_after_main_dag_2
,您可以定义关系,使两者的上游任务都为main_dag
main_dag >> run_after_main_dag_1 # It is just dependent on main_dag
main_dag >> run_after_main_dag_2 # It is just dependent on main_dag
一旦main_dag任务执行完毕,它将并行启动两个任务