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 这样做。
可能您真正想要的是某种其他类型的依赖机制。我想猜猜你的情况是什么:
- 你有 DagA 和 DagB,每个 运行s 在一天的不同时间
- DagB 依赖于 DagA(或者某些 DagC 依赖于 DagA 和 DagB)
- 您创建了一个 DagX,其中 DagA 和 DagB 作为子标签来控制依赖关系
我不确定你为什么不希望 DagA 和 DagB 成为独立的 Dag,但如果你真的想要保留你的结构,你可以设置父 DAG 时间表成为 DagA 和 DagB 计划的最大公约数,并添加 以避免在未到期时执行它们。
另一方面,我建议您尝试直接用代码映射依赖关系,而不是让它们隐含在调度中。如果 DagA 依赖于外部的东西,无论是数据源还是另一个 DAG,你可以使用 Sensor.
我一直在尝试设置一个具有两个子标签的父 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 这样做。
可能您真正想要的是某种其他类型的依赖机制。我想猜猜你的情况是什么:
- 你有 DagA 和 DagB,每个 运行s 在一天的不同时间
- DagB 依赖于 DagA(或者某些 DagC 依赖于 DagA 和 DagB)
- 您创建了一个 DagX,其中 DagA 和 DagB 作为子标签来控制依赖关系
我不确定你为什么不希望 DagA 和 DagB 成为独立的 Dag,但如果你真的想要保留你的结构,你可以设置父 DAG 时间表成为 DagA 和 DagB 计划的最大公约数,并添加
另一方面,我建议您尝试直接用代码映射依赖关系,而不是让它们隐含在调度中。如果 DagA 依赖于外部的东西,无论是数据源还是另一个 DAG,你可以使用 Sensor.