气流DAG多次运行

时间:2019-08-29 21:46:44

标签: apache airflow directed-acyclic-graphs

我有一个DAG,每次成功完成后,我想多次运行它。例如,我要运行10次并停止。有没有办法做到这一点?我尝试使用CRON进行调度,但它似乎不干净,也无法通过UI多次触发DAG(并行运行)。

3 个答案:

答案 0 :(得分:0)

  • 除了提供start_date之外,您还可以为DAG提供end_date
  • 引用docstring
  

: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。