【问题标题】:Wait for triggered DAG等待触发的 DAG
【发布时间】:2018-07-17 16:33:15
【问题描述】:

我有一个控制 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 触发后依赖 DAG 的 execution_date(然后可以作为参数传递给传感器)

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

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

【问题讨论】:

    标签: airflow google-cloud-composer


    【解决方案1】:

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

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

    【讨论】:

    • mh,第二个听起来是一个非常优雅的解决方案。问题是:我希望有机会独立运行 2 个 dag,使用 ui 触发。这种情况可能每月只有 1 或 2 次,因此另一个想法是为手动运行创建一个单独的 DAG
    猜你喜欢
    • 2015-09-26
    • 1970-01-01
    • 2021-11-01
    • 2015-02-20
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多