Airflow 通过for循环在动态生成任务后执行单个任务
假设我有以下DAG(基本占位符函数),它使用for循环动态生成任务(通过迭代列表):Airflow 通过for循环在动态生成任务后执行单个任务,airflow,airflow-scheduler,Airflow,Airflow Scheduler,假设我有以下DAG(基本占位符函数),它使用for循环动态生成任务(通过迭代列表): 来自气流导入DAG 从afflow.operators.python_operator导入PythonOperator 默认参数={ “所有者”:“用户”, “依赖于过去”:False, “开始日期”:日期时间(2019、12、16、0、0、0), '电子邮件':['xxx@xxx.com'], “失败时发送电子邮件”:False, “重试时发送电子邮件”:False, “重试”:1, “重试延迟”:时间增量(
来自气流导入DAG
从afflow.operators.python_operator导入PythonOperator
默认参数={
“所有者”:“用户”,
“依赖于过去”:False,
“开始日期”:日期时间(2019、12、16、0、0、0),
'电子邮件':['xxx@xxx.com'],
“失败时发送电子邮件”:False,
“重试时发送电子邮件”:False,
“重试”:1,
“重试延迟”:时间增量(分钟=5)
}
dag=dag('xxx',catchup=False,
默认参数=默认参数,计划间隔=0*/4***')
#一些伪函数
def第一步(x):
打印(x)
def step2():
打印(“好的,我们完成了所有步骤1。”)
some_list=[1,2,3,4,5,6]
对于某些列表中的t:
task_id=f'FirstStep_{t}
任务=蟒蛇算子(
任务id=任务id,
python_callable=StepOne,
提供上下文=False,
op_kwargs={'x':str(t)},
dag=dag
)
任务
我想介绍一些简单的附加任务:
task2=PythonOperator(
任务\u id=“第二步”,
python_callable=step2,
提供上下文=False,
dag=dag
)
只有在第一个步骤中的所有步骤都完成后,才会运行。线性地,这将是task>>task2
如何执行此操作?您可以将任务依赖关系与阵列关联起来 在taskA和taskB完成后执行taskC
[taskA,taskB]>>taskC
或
taskA完成后,并行执行taskB和taskC
taskA>>[taskB,taskC]
只要上游或下游的一侧是非阵列
因此,以你为例
task1 = []
for t in some_list:
task_id = f'FirstStep_{t}'
task1.append(PythonOperator(
task_id=task_id,
python_callable=StepOne,
provide_context=False,
op_kwargs={'x': str(t)},
dag=dag))
task2 = PythonOperator(
task_id="SecondStep",
python_callable=StepTwo,
provide_context=False,
dag=dag)
task1 >> task2
你确定这样行吗?部署DAG时,我得到了>>的错误
task1>>task2不支持的操作数类型:'list'和'list'
mytask1
和task2
都是列表类型(在概念上,我希望所有的步骤都在<代码> TASK1<代码>中运行,然后在