气流使用与父dag

时间:2018-04-09 22:00:22

标签: airflow airflow-scheduler

我一直在尝试设置一个有两个子标签的父dag,由于各自的数据源可用,每个子标签的运行时间略有不同。然而,子标记似乎立即与父dag一起开始,忽略了他们自己的schedule_intervals。有人知道这是否是气流的默认行为?有没有办法绕过它而不将它们变成独立的dag或使用传感器?

2 个答案:

答案 0 :(得分:3)

子标记将遵循父dag计划(因为它是触发子标记的父标记)并且不会按照自己的计划运行,除非它被配置为独立dag。

你真正想要的是其他类型的依赖机制。我想猜测你的情况是什么:

  1. 你有DagA和DagB,每个都在一天的不同时间运行
  2. DagB依赖于DagA(或者某些DagC依赖于DagA和DagB)
  3. 您创建了一个DagX,它将DagA和DagB作为子标记来控制依赖关系
  4. 我不确定为什么你不希望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中的子标记运算符运行。

     

我们通过使用工厂功能来解决这个问题。

相关问题