等待触发的DAG

时间:2018-07-17 16:33:15

标签: airflow google-cloud-composer

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

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

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

我的问题:

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

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

    b)从属DAG的execution_date与对照DAG相同

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

1 个答案:

答案 0 :(得分:1)

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

  1. 您是否可以通过合并DAG或将其与SubDagOperator组合在一起,将其合并为一个DAG?
  2. 如果确实必须将DAG分开,请尝试消除控件DAG,将两个DAG置于相同的start_date和schedule_interval,然后让第二个DAG使用ExternalTask​​sSensor作为其第一项任务。由于DAG的时间表相同,因此受抚养DAG的execution_date将与受抚养人的execute_date相同。