Airflow中前次DAG运行失败后,后续调度运行卡在running状态是否正常?
Airflow DAG运行失败后后续调度异常的分析与解决
默认情况下,Airflow不会因前一次DAG运行失败导致后续运行卡在running状态且任务处于no status,你遇到的这种情况是由特定配置触发的预期行为。
触发该现象的核心参数
depends_on_past: 当该参数设为True时,当前DAG运行会强制依赖上一次运行的成功状态。如果前次运行失败,当前运行会进入等待状态,表现为running但所有任务无状态。wait_for_downstream: 若该参数为True,当前DAG的任务会等待上游同调度周期的任务完成,若上游运行失败也可能引发类似阻塞。
临时失败场景下的恢复方案
- 关闭
depends_on_past依赖:如果业务逻辑不需要依赖前一次运行结果,直接将DAG定义中的depends_on_past设为False,后续调度会正常触发并执行任务。 - 手动标记前次失败运行为成功:如果前次失败是临时问题(比如网络波动、资源短暂不可用),可在Airflow UI中找到对应的失败DAG运行,通过Mark Success操作将其标记为成功,后续运行会自动解除阻塞并正常执行。
- 启用
ignore_depends_on_past:在DAG定义中添加ignore_depends_on_past=True,允许在特定场景下忽略前次运行的状态依赖,适用于需要保留depends_on_past但临时跳过失败依赖的场景。
内容的提问来源于stack exchange,提问作者sil
相关产品推荐
相关产品推荐

