我正在使用Airflow documentation设置交叉依赖的DAGS。我有一个特定的用例,其中DAG B要求DAG A首先运行-但是,如果DAG A延迟了很长时间,则DAG B仍应运行。因此,我实质上是在寻找在2个传感器之间进行“或”运算的方式。
说DAG B需要每天下午5点运行,这就是我在代码中要这样做的方式:
while True:
CURRENT_TIME = getCurrentTime()
if DAG A completed OR CURRENT_TIME > 5pm:
run DAG B
这在代码中要简单得多,但是看不到Airflow是如何完成的。
答案 0 :(得分:0)
有趣的问题,这就是我认为可以实现的方式
如ExternalTaskSensor
指南中所述,您需要在DAG-B的开始处放置一个Cross-DAG Dependencies,以推迟DAG-B的执行,直到DAG-A完成。 / p>
timeout
param,以使传感器在一定的最大时间后失效。然后在DAG-B的第一个 actual 任务中(紧接ExternalTaskSensor
之后)将trigge_rule=TriggerRule.ALL_DONE
设置为确保您的DAG-无论DAG-A是否在规定的时间内完成,B都会启动;换句话说
delta