Airflow DAG 多次运行
Airflow DAG Multiple Runs
我有一个 DAG,我想在每次成功完成后多次 运行。例如,我想 运行 它 10 次然后停止。有没有办法做到这一点?我尝试使用 CRON 进行调度,但它看起来并不干净,也无法通过 UI 多次触发 DAG(运行s 并行)。
- 除了提供
start_date
之外,您还可以为 DAG 提供 end_date
- 引用 docstring
:param start_date
: The timestamp from which the scheduler will attempt
to backfill
:type start_date
: datetime.datetime
:param end_date:
A date beyond which your DAG won't run, leave to None for open ended scheduling
:type end_date
: datetime.datetime
虽然无关,但也可以查看 airflow.cfg
as mentioned in this 文章
中的以下 scheduler
设置
run_duration
num_runs
UPDATE-1
在他的文章 Use apache airflow to run task exactly once 中,@Andreas P 描述了一种巧妙的技术,我相信它可以适应您的用例。虽然这不是一个非常整洁的解决方案,但它至少允许您预先指定 DAG 的运行次数(整数)而不是 end_date
.
或者(假设您实现了上述方法)而不是在每个 DAG 中烘焙这个 skipping-dag-after max-runs 功能,您可以创建一个单独的 orchestrator DAG 在最大运行次数过后禁用给定的 DAG。
您必须设置属性depends_on_past。这是在 DAG 的默认参数部分下设置的,它指的是以前的实例 dag 实例。这是解决你的问题。
我找到了我的用例的解决方案。它使用 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。
我有一个 DAG,我想在每次成功完成后多次 运行。例如,我想 运行 它 10 次然后停止。有没有办法做到这一点?我尝试使用 CRON 进行调度,但它看起来并不干净,也无法通过 UI 多次触发 DAG(运行s 并行)。
- 除了提供
start_date
之外,您还可以为 DAG 提供end_date
- 引用 docstring
:param start_date
: The timestamp from which the scheduler will attempt to backfill
:type start_date
: datetime.datetime
:param end_date:
A date beyond which your DAG won't run, leave to None for open ended scheduling
:type end_date
: datetime.datetime
虽然无关,但也可以查看 airflow.cfg
as mentioned in this 文章
scheduler
设置
run_duration
num_runs
UPDATE-1
在他的文章 Use apache airflow to run task exactly once 中,@Andreas P 描述了一种巧妙的技术,我相信它可以适应您的用例。虽然这不是一个非常整洁的解决方案,但它至少允许您预先指定 DAG 的运行次数(整数)而不是
end_date
.或者(假设您实现了上述方法)而不是在每个 DAG 中烘焙这个 skipping-dag-after max-runs 功能,您可以创建一个单独的 orchestrator DAG 在最大运行次数过后禁用给定的 DAG。
您必须设置属性depends_on_past。这是在 DAG 的默认参数部分下设置的,它指的是以前的实例 dag 实例。这是解决你的问题。
我找到了我的用例的解决方案。它使用 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。