Airflow 1.10.10 DAG 的时间表更改

Airflow 1.10.10 Schedule change for DAG

我正在使用 Airflow 1.10.10,想知道如何更改 Aiflow DAG 计划。我在网上查了一下,在大多数评论中,它建议更改 DAG 的时间表,使用新的 dag_id 创建一个新的 DAG,或者更改现有 DAG 的 dag_id 并提供新的 schedule_interval 。尝试更改现有 DAG 的计划不会以直接的方式工作,并且会抛出错误或可能产生计划错误。

不过,我尝试对此进行测试,以便创建我的 DAG 计划更改导致错误情况的场景。这是我通过仅更改 DAG 文件中的 schedule_interval 来尝试的。我在我的 DAG 中尝试了下面的时间表更改,并且都按预期工作。日程修改妥当,没有发现错误。

谁能解释一下如果我们在 DAG 中更改 schedule_interval 而不更改 ID 可能会出现什么样的问题。

我确实在 Common Pitfalls 的旧 Airflow Confluence 页面上看到了这条建议。

When needing to change your start_date and schedule interval, change the name of the dag (a.k.a. dag_id) - I follow the convention : my_dag_v1, my_dag_v2, my_dag_v3, my_dag_v4, etc...

  • Changing schedule interval always requires changing the dag_id, because previously run TaskInstances will not align with the new schedule interval
  • Changing start_date without changing schedule_interval is safe, but changing to an earlier start_date will not create any new DagRuns for the time between the new start_date and the old one, so tasks will not automatically backfill to the new dates. If you manually create DagRuns, tasks will be scheduled, as long as the DagRun date is after both the task start_date and the dag start_date.

我不知道作者的意图,但我想更改 schedule_interval 可能会给用户带来困惑。当他们重新访问这些任务时,他们会想知道为什么当前 schedule_interval 与过去的任务执行不匹配,因为该信息未存储在任务级别。

更改 schedule_interval 不会影响过去的 dagrun 或任务。此更改将影响新 dagrun 的创建时间,这会影响这些 dagrun 中的任务。

我个人不会在更新 DAG 的 scheduler_interval 时修改 dag_id,原因有两个。

  1. 如果我保留以前的 DAG,我会不必要地给调度程序带来更多压力来处理不会打开的 DAG。
  2. 如果我不保留以前的 DAG,我基本上会丢失 dagrun 的所有历史记录,因为它有一个不同的 schedule_interval。

编辑:似乎创建了一个 Github Issue 来移动常见陷阱页面,但它已经过时了。