气流任务取决于另一个任务结果吗?

时间:2019-02-21 08:22:04

标签: python airflow airflow-scheduler

我有2个任务

第一个任务将一些数据集下载到folder_1

第二项任务是清除folder_1上的每个文件

CRUDE_NEW_DATASET_LOCAL是本地路径

download_crude_new_dataset = BashOperator(
        task_id = "download_crude_new_dataset",
        bash_command = bash.download_crude_new_dataset(),
        dag=dag
)

cleaning_crude_new_dataset = []
crude_new_dataset = glob(bash.CRUDE_NEW_DATASET_LOCAL+"/*",recursive=True)
for p in crude_new_dataset :
    path = p.replace('\\','/')
    if os.path.isfile(path):
        cleaning_crude_new_dataset.append(
            BashOperator(
                task_id = "cleaning_crude_new_dataset-"+bash._path_leaf_(path),
                bash_command = bash.cleaning_dataset(path),
                dag=dag
            )
    ) 

download_crude_new_dataset >> cleaning_crude_new_dataset

我触发气流滞后的问题是folder_1还是空的。并且使cleaning_crude_new_dataset(任务数组)为空。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

尝试一下:

download_crude_new_dataset = BashOperator(
        task_id= "download_crude_new_dataset",
        bash_command= bash.download_crude_new_dataset(),
        dag= dag
)

#cleaning_crude_new_dataset = []

crude_new_dataset = glob( bash.CRUDE_NEW_DATASET_LOCAL + "/*", recursive= True )
for p in crude_new_dataset :
    path = p.replace( '\\', '/' )
    if os.path.isfile( path ):
        temp_task = BashOperator(
            task_id= "cleaning_crude_new_dataset-" + bash._path_leaf_( path ),
            bash_command= bash.cleaning_dataset( path ),
            dag= dag
        )
        #cleaning_crude_new_dataset.append( temp_task )
        download_crude_new_dataset.set_downstream( temp_task )

答案 1 :(得分:0)

此问题已解决

将任务从单个Dag拆分为多个Dag 并触发其他dag(dag1 >> dag2 >> dag3 ...)

如果需要,请将dag_dir_list_interval从300更改为较小的数字

相关问题