如何在循环中实施气流DAG

时间:2019-05-03 16:15:58

标签: python airflow

我刚开始使用Airflow。我想在一个循环中设置一个DAG,在该循环中,下一个DAG在上一个DAG完成时开始。这是我要实现的工作流程:

list_of_files = [......]
for file in list_of_files:
   dag = DAG('pipeline', default_args=default_args, schedule_interval=None)
   t1 = BashOperator('copy_this_file', ....)
   t2 = BashOperator('process_this_file', ...)
   t1.set_downstream(t2)

如果我运行airflow backfill pipeline -s 2019-05-01,则会同时启动所有DAG。

1 个答案:

答案 0 :(得分:1)

DAG不能相互依赖,它们是独立的工作流程。您希望将任务配置为相互依赖。您可以有一个带有多个执行分支的DAG,每个文件一个,这样的事情(未经测试):

dag = DAG('pipeline', ...)
list_of_files = [......]
with dag:
    for file in list_of_files:
       t1 = BashOperator('copy_this_file', ....)
       t2 = BashOperator('process_this_file', ...)
       t1.set_downstream(t2)