我有一个DAG,我希望在每次成功运行后运行多次。例如,我想运行它10次并停止。有办法实现这个目标吗?我尝试了使用CRON进行调度,但似乎不太干净;通过UI多次触发DAG不能正常工作(会并行运行)。
我有一个DAG,我希望在每次成功运行后运行多次。例如,我想运行它10次并停止。有办法实现这个目标吗?我尝试了使用CRON进行调度,但似乎不太干净;通过UI多次触发DAG不能正常工作(会并行运行)。
# 每个DAG运行的最大活动次数
max_active_runs_per_dag = 1
这样我们就只能在一次活动DAG运行中,而且如果前一个运行失败,则不会继续下一个DAG运行。这是我测试的Airflow版本1.10.1。
start_date
,您还可以为您的DAG提供end_date
:param start_date
: 调度程序将尝试回溯的时间戳
:type start_date
: datetime.datetime
:param end_date:
您的DAG不会在此日期之后运行,请将其保留为None以进行无限期调度
:type end_date
: datetime.datetime
虽然不相关,但也请查看this文章中提到的airflow.cfg
中的以下scheduler
设置:
run_duration
num_runs
更新-1
在他的文章使用apache airflow精确运行任务中,@Andreas P描述了一种聪明的技术,我相信可以适应您的用例。虽然这也不是非常整洁的解决方案,但至少可以让您预先指定DAG的运行次数(整数),而不是使用end_date
。
或者(假设您实现了上述方法),而不是在每个DAG中嵌入此跳过max-runs功能,您可以创建一个单独的编排DAG,在其最大运行次数后禁用给定的DAG。
您需要设置属性depends_on_past。这是在DAG的默认参数部分设置的,它指的是先前实例的dag实例。这将解决您的问题。