Airflow 如果成功,请多次重新运行单个任务

Airflow 如果成功,请多次重新运行单个任务,airflow,Airflow,按顺序重新运行任务(a)3次的最佳方法是什么 即任务A->任务A->任务A->任务B 我这样做是因为我将运行另一个单独的数据验证任务(B),该任务将比较这3个单独运行的数据 这就是我到目前为止所做的: dag=dag(“hello\u world\u 0”,description=“Starting tutorial”,schedule\u interval='***', 开始日期=日期时间(2019,1,1), catchup=错误) data_pull_1=bash操作符(任务id='tru

按顺序重新运行任务(a)3次的最佳方法是什么

即任务A->任务A->任务A->任务B

我这样做是因为我将运行另一个单独的数据验证任务(B),该任务将比较这3个单独运行的数据

这就是我到目前为止所做的:

dag=dag(“hello\u world\u 0”,description=“Starting tutorial”,schedule\u interval='***',
开始日期=日期时间(2019,1,1),
catchup=错误)
data_pull_1=bash操作符(任务id='trust_1',bash_命令='echo“Hello World-1!”,dag=dag)
data_pull_2=bash操作符(任务id='trust_2',bash_命令='echo“Hello World-2!”,dag=dag)
data_pull_3=bash操作符(任务id='trust_3',bash_命令='echo“Hello World-3!”,dag=dag)
data\u validation=bash运算符(任务id='data\u validation',bash\u命令='echo“data validation!”,dag=dag)
数据拉取1>>数据拉取2>>数据拉取3>>数据验证

这可能会起作用,但还有更优雅的方法吗?

您可以尝试下面的实现,我们使用for循环创建3个操作

从日期时间导入日期时间
从气流导入DAG
从afflow.operators.bash_operator导入bash operator
dag=dag(
“你好,世界0”,
description=“开始教程”,
计划时间间隔=无,
开始日期=日期时间(2019,1,1),
catchup=False
)
链_运算符=[]
最大尝试次数=3
对于范围内的尝试(最大尝试):
数据_pull=bash运算符(
task_id='trust'.{}.格式(trust),
bash_command='echo“Hello World-{}!”。格式(尝试),
dag=dag
)
链运算符。追加(数据提取)
data\u validation=bash运算符(任务id='data\u validation',bash\u命令='echo“data validation!”,dag=dag)
chain_operators.append(数据_验证)
#添加下游
对于i,枚举中的val(链_运算符[:-1]):
val.set_下游(链_运算符[i+1])

我将schedule_interval更改为None,因为使用
'***'
作业将连续触发

这三个任务是否相互独立?这三个任务应该一个接一个地运行(理想情况下是在成功之后),即任务A运行(成功),任务A再次运行(成功),任务A最后运行一次(成功)。任务B终于被调用了。谢谢。。我稍微修改了你关于依赖关系的回答。