我有一个DAG,每次成功完成后,我想多次运行它。例如,我要运行10次并停止。有没有办法做到这一点?我尝试使用CRON进行调度,但它似乎不干净,也无法通过UI多次触发DAG(并行运行)。
答案 0 :(得分:0)
start_date
之外,您还可以为DAG提供end_date
:param start_date
:调度程序将尝试使用的时间戳记 回填
:type start_date
:datetime.datetime
:param end_date:
一个DAG无法运行的日期,请设置为“无”以进行开放式计划
:type end_date
:datetime.datetime
不相关的同时,也请查看airflow.cfg
文章中提到的this中的scheduler
设置
run_duration
num_runs
UPDATE-1
@Andreas P 在他的文章Use apache airflow to run task exactly once中描述了一种巧妙的技术,我认为该技术可以适合您的用例。尽管即使那样也不是很整洁的解决方案,但它至少允许您预先指定DAG的运行次数(整数)而不是end_date
。
或者(假设您实现了上述方法),而不是在每个DAG中烘焙此skip-dag-after max-runs功能之后,您可以创建一个单独的 orchestrator DAG 来禁用给定DAG的最大运行时间结束后。
答案 1 :(得分:0)
您必须设置属性 depends_on_past 。这是在DAG的默认参数部分下设置的,它引用以前的实例dag实例。这可以解决您的问题。
答案 2 :(得分:0)
我找到了用例的解决方案。它使用 depends_on_past = True (由@Hitesh Gupta提及的 )并在下面设置您的 airflow.cfg 文件进行了合并:
# The maximum number of active DAG runs per DAG
max_active_runs_per_dag = 1
这使我们一次只能运行一个活动的DAG,并且如果上一次运行失败,则不能继续下一次DAG运行。这是我测试过的Airflow版本1.10.1。