1

我有一个控制 dag,它触发了另外两个 dag。这两个 dag 应该顺序运行,而不是并行运行。我尝试解决这样的问题:

TriggerDag (using BashOp) -> ExternalDagSensor -> TriggerDag (using BashOp) -> ExternalDagSensor.

我的问题是触发的 DAG 确实有一个特定的execution_date(具体到秒,而不是 00:00 的分钟和秒)。DagSensor 现在使用execution_time控制 dag 的 来戳从属 dag,因此传感器永远不会被触发,因为从属 dag 具有不同的execution_time.

我的问题:

  1. Trigger->Sensor->Trigger->Sensor模式是顺序触发 DAG 的正确方法吗?
  2. 如果是:我如何获得

    a)execution_date由控制器 DAG 触发后的依赖 DAG 中的任何一个(然后可以作为参数传递给传感器)

    或者

    b)execution_date依赖 DAG 与控制 DAG 相同

如果可能,我不想查询元数据数据库以获取依赖 DAG 运行的 execution_time。

4

1 回答 1

2

有几个选项可能会更简单一些。

  1. 您可以通过合并它们的任务或将它们与SubDagOperator组合来将 DAG 组合成一个 DAG吗?
  2. 如果您确实必须将 DAG 分开,请尝试消除控制 DAG,将两个 DAG 置于相同的 start_date 和 schedule_interval 上,并让第二个 DAG 使用 ExternalTask​​sSensor 作为其第一个任务。由于 DAG 的时间表相同,因此依赖 DAG 的 execution_date 将与被依赖者的 execution_date 相同。
于 2018-07-24T15:47:03.457 回答