我一直在尝试设置一个有两个子标签的父dag,由于各自的数据源可用,每个子标签的运行时间略有不同。然而,子标记似乎立即与父dag一起开始,忽略了他们自己的schedule_intervals。有人知道这是否是气流的默认行为?有没有办法绕过它而不将它们变成独立的dag或使用传感器?
答案 0 :(得分:3)
子标记将遵循父dag计划(因为它是触发子标记的父标记)并且不会按照自己的计划运行,除非它被配置为独立dag。
你真正想要的是其他类型的依赖机制。我想猜测你的情况是什么:
我不确定为什么你不希望DagA和DagB成为独立的Dags,但如果真的希望保留你的结构,你可以将父DAG计划设置为最常见的来自DagA和DagB的时间表的除数,并添加following definition以避免在它们未到期时执行它们。
另一方面,我建议你尝试直接用代码映射依赖项,而不是让它们隐含在调度中。如果DagA依赖于外部事物,无论是数据源还是其他DAG,您都可以使用conditional flows。
答案 1 :(得分:0)
如果我理解正确,这可能与博文https://medium.com/handy-tech/airflow-tips-tricks-and-pitfalls-9ba53fba14eb:
有关或者更准确:除非用某种工厂保护它,否则你不能在dags文件夹中放置一个子模板。或者更准确:你可以,但是子标签将按照自己的时间表运行,也可以通过主dag中的子标记运算符运行。
我们通过使用工厂功能来解决这个问题。