airflow 使用与父 dag 不同的 schedule_interval 创建 subdag

airflow create subdag with a different schedule_interval than parent dag

我一直在尝试设置一个具有两个子标签的父 dag,由于各自数据源的可用性,每个子标签的运行时间略有不同。然而,subdags 似乎立即与父 dag 一起启动,而忽略了它们自己的 schedule_intervals。有人知道这是否是气流的默认行为吗?有没有办法在不将它们变成独立的 dag 或使用传感器的情况下解决这个问题?

如果我没理解错的话,这可能与博客有关 post https://medium.com/handy-tech/airflow-tips-tricks-and-pitfalls-9ba53fba14eb:

Or to be more accurate: you can’t put a subdag in its own module in the dags folder unless you protect it with some kind of factory. Or to be even more accurate: you can, but then the subdag will be run on its own schedule, as well as by the subdag operator in the main dag.

We solve this by using a factory function.

subdag 将服从父 dag 时间表(因为它是触发 subdag 的父级)并且不会 运行 自己的时间表,除非它被配置为作为独立 dag 这样做。

可能您真正想要的是某种其他类型的依赖机制。我想猜猜你的情况是什么:

  1. 你有 DagA 和 DagB,每个 运行s 在一天的不同时间
  2. DagB 依赖于 DagA(或者某些 DagC 依赖于 DagA 和 DagB)
  3. 您创建了一个 DagX,其中 DagA 和 DagB 作为子标签来控制依赖关系

我不确定你为什么不希望 DagA 和 DagB 成为独立的 Dag,但如果你真的想要保留你的结构,你可以设置父 DAG 时间表成为 DagA 和 DagB 计划的最大公约数,并添加 以避免在未到期时执行它们。

另一方面,我建议您尝试直接用代码映射依赖关系,而不是让它们隐含在调度中。如果 DagA 依赖于外部的东西,无论是数据源还是另一个 DAG,你可以使用 Sensor.