Airflow 气流:即使交叉相关DAG尚未完成,也会触发DAG运行

Airflow 气流:即使交叉相关DAG尚未完成,也会触发DAG运行,airflow,Airflow,我正在使用气流设置相互依赖的DAG。我有一个特殊的用例,其中我的DAG B要求首先运行DAG a,但是,如果DAG a延迟足够长的时间,DAG B仍然应该运行。所以我在寻找一种在两个传感器之间连接OR操作的方法 假设DAG B需要在每天下午5点之前运行,那么我将在代码中这样做: while True: CURRENT_TIME = getCurrentTime() if DAG A completed OR CURRENT_TIME > 5pm: run D

我正在使用气流设置相互依赖的DAG。我有一个特殊的用例,其中我的DAG B要求首先运行DAG a,但是,如果DAG a延迟足够长的时间,DAG B仍然应该运行。所以我在寻找一种在两个传感器之间连接OR操作的方法

假设DAG B需要在每天下午5点之前运行,那么我将在代码中这样做:

while True:
    CURRENT_TIME = getCurrentTime()

    if DAG A completed OR CURRENT_TIME > 5pm:
       run DAG B

这在代码中要简单得多,但是看不到气流是如何实现的。

有趣的问题,下面是我认为可以实现的方法

  • 如指南中所述,在DAG-B的开头需要一个标记,以推迟DAG-B的执行,直到DAG-A完成

    • 在此,您还必须设置,以便传感器在特定的最长时间后发生故障
  • 然后在DAG-B的第一个实际任务中(紧接着
    ExternalTaskSensor
    )设置,以确保DAG-B的实际处理开始,而不管DAG-A是否在规定的时间内完成;换句话说

    • DAG-B的执行将推迟到DAG-A完成,但仅在最长
      delta
      持续时间内
      • 如果DAG-A在此持续时间内完成,则DAG-B将在该持续时间后立即开始执行
      • 但如果DAG-A未能在该持续时间内完成,则DAG-B将在该持续时间过后开始执行

  • 有趣的问题是,我认为这是如何实现的

  • 如指南中所述,在DAG-B的开头需要一个标记,以推迟DAG-B的执行,直到DAG-A完成

    • 在此,您还必须设置,以便传感器在特定的最长时间后发生故障
  • 然后在DAG-B的第一个实际任务中(紧接着
    ExternalTaskSensor
    )设置,以确保DAG-B的实际处理开始,而不管DAG-A是否在规定的时间内完成;换句话说

    • DAG-B的执行将推迟到DAG-A完成,但仅在最长
      delta
      持续时间内
      • 如果DAG-A在此持续时间内完成,则DAG-B将在该持续时间后立即开始执行
      • 但如果DAG-A未能在该持续时间内完成,则DAG-B将在该持续时间过后开始执行