Airflow 如何在循环中处理多个文件

Airflow 如何在循环中处理多个文件,airflow,Airflow,嗨,我正在尝试使用apache处理多个文件。我尝试了不同的选择,但最终使用了triggerdagrunoperator。所以基本上我有两个dag,一个是预定的dag来检查文件,如果找到文件,它将触发dag。但我想对许多文件重复这一点。一次检查一个文件,如果文件存在,添加参数并调用触发器dag def条件触发(上下文、dag运行对象): task\u id=context['params']['task\u id'] task\u instance=context['task\u instanc

嗨,我正在尝试使用apache处理多个文件。我尝试了不同的选择,但最终使用了triggerdagrunoperator。所以基本上我有两个dag,一个是预定的dag来检查文件,如果找到文件,它将触发dag。但我想对许多文件重复这一点。一次检查一个文件,如果文件存在,添加参数并调用触发器dag


def条件触发(上下文、dag运行对象):
task\u id=context['params']['task\u id']
task\u instance=context['task\u instance']
file\u type=task\u instance.xcom\u pull(task\u id,key='file\u type')
如果文件类型不是无且文件类型!="":
dag_run_obj.payload={'file_type':file_type,'file_name':file_name,'file_path':full_path}
返回数据运行对象
一无所获
trigger\u dag\u run\u task=TriggerDagRunOperator(
task\u id='trigger\u dag\u run\u task',
trigger\u dag\u id=“trigger\u dag”,
python_callable=有条件地_触发器,
params={'task\u id':检查\u文件\u是否存在\u task\u id},
dag=dag,
)
如果文件存在,则执行检查任务(*args,**kwargs):
输入文件列表=[“a”,“b”]
对于输入文件列表中的项目:
完整路径=json_数据[项目]['input_folder_path']
directory=os.listdir(完整路径)
对于目录中的文件:
如果没有重新匹配(文件名、文件):
持续
其他:
#真的
kwargs['ti'].xcom\u push(key='file\u type',value=item)
返回“触发器\u数据\u运行\u任务”
#假的
返回“文件未找到任务”
def execute_file_not_found_task(*args,**kwargs):
logging.info(“未找到文件路径”)
文件未找到任务=PythonOperator(
task\u id='file\u未找到\u task',
重试次数=3次,
提供上下文=True,
dag=dag,
python\u callable=execute\u file\u not\u found\u任务,
op_args=[])
检查\u文件是否存在\u task=BranchPythonOperator(
任务\u id='check\u如果\u文件\u存在\u任务',
重试次数=3次,
提供上下文=True,
dag=dag,
python\u callable=执行\u检查\u如果\u文件\u存在\u任务,
op_args=[])
检查任务中是否存在文件。设置下游(触发dag运行任务)
检查任务是否存在文件。将任务设置为下游(未找到文件)

你能裁剪你的代码,使之成为与你的问题相关的部分吗?减少它。基本上,我需要循环每个文件的任务。我在execute\u check\u if\u file\u executes\u task中的做法可能是重复的,你能裁剪你的代码,使它只是与你的问题相关的部分吗?减少它。基本上,我需要循环每个文件的任务。我在执行中的方式是检查文件是否存在任务可能重复