Airflow 气流使用与父dag不同的明细表\u间隔创建子dag

Airflow 气流使用与父dag不同的明细表\u间隔创建子dag,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我一直在尝试设置一个父dag,它有两个子dag,由于它们各自的数据源的可用性,每个子dag在稍微不同的时间运行。但是,子dag似乎会立即与父dag一起启动,而不考虑它们自己的计划间隔。有人知道这是气流的默认行为吗?有没有办法不把它们变成独立的DAG或使用传感器来解决这个问题?如果我理解正确,这可能与一篇博客文章有关: 或者更准确地说:除非使用某种工厂保护子DAG,否则不能将其放入DAG文件夹中自己的模块中。或者更准确地说:可以,但是子dag将按照其自己的计划运行,并且由主dag中的子dag操作符

我一直在尝试设置一个父dag,它有两个子dag,由于它们各自的数据源的可用性,每个子dag在稍微不同的时间运行。但是,子dag似乎会立即与父dag一起启动,而不考虑它们自己的计划间隔。有人知道这是气流的默认行为吗?有没有办法不把它们变成独立的DAG或使用传感器来解决这个问题?

如果我理解正确,这可能与一篇博客文章有关:

或者更准确地说:除非使用某种工厂保护子DAG,否则不能将其放入DAG文件夹中自己的模块中。或者更准确地说:可以,但是子dag将按照其自己的计划运行,并且由主dag中的子dag操作符运行

我们通过使用工厂函数来解决这个问题


子dag将遵守父dag计划(因为触发子dag的是父dag),并且不会按照自己的计划运行,除非将其配置为作为独立dag运行

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

  • 有DagA和DagB,它们在一天中的不同时间运行
  • DagB依赖于DagA(或某些DagC依赖于DagA和DagB)
  • 您创建了一个DagX,该DagX将DagA和DagB作为子DAG来控制依赖项
  • 我不确定您为什么不希望DagA和DagB成为独立的DAG,但如果您确实希望保留您的结构,可以将父DAG计划设置为DagA和DagB计划的最大公约数,并添加以避免在未到期时执行它们


    另一方面,我建议您尝试直接用代码映射依赖项,而不是用调度隐式地映射依赖项。如果DagA依赖于外部数据源或其他DAG,则可以使用。

    在本例中,我的子DAG已包装在factory方法中。从你的博客文章来看,如果将子DAG分配给子DAG操作符,那么调度程序可能不会调度子DAG?