Airflow DAG计划运行卡在过去,如何跳过未执行任务?
Airflow DAG未执行运行的跳过方案
当然可以跳过这个未执行的计划运行,完全不用实际运行DAG。下面是具体可行的方法,以及分析你之前操作没起效的原因:
直接跳过的操作方法
方法一:通过Airflow UI标记成功
- 打开Airflow界面,进入该DAG的详情页,找到「DAG Runs」标签页
- 在列表中找到状态为「scheduled」或「queued」的2022-10-31 14:00:00运行记录
- 点击该记录右侧的操作按钮,选择「Mark Success」,直接将其标记为成功状态,等同于跳过此次运行
方法二:使用Airflow命令行工具执行
在Airflow所在服务器上运行以下命令,即可将指定时间的DAG运行标记为成功:
# 针对DAG指定日期的运行实例 airflow dags backfill --mark-success -s 2022-10-31 -e 2022-10-31 dag
或者精准处理单个任务实例:
airflow tasks clear --mark-success -s 2022-10-31 -e 2022-10-31 dag
你之前操作未解决问题的原因
- 手动触发DAG:手动触发生成的是临时运行实例,和原本计划的scheduled实例无关,无法影响目标运行
- 修改调度间隔为当前时间:该操作只会生成新的计划任务,原2022-10-31 14:00:00的任务仍会保留;生成3天前的日志是因为catchup逻辑触发了更早的周期,和目标任务无关
- 设置catchup=True:你的DAG
start_date为2022-10-31,catchup仅会补全start_date到当前时间之间的缺失运行,但目标任务已处于scheduled状态,catchup不会处理已存在的计划实例
额外提醒
如果之后不想再出现类似遗漏运行的情况:
- 确保Airflow调度器持续正常运行,避免错过计划时间
- 根据需求调整
catchup参数,设为False可关闭自动补全历史运行的逻辑
内容的提问来源于stack exchange,提问作者Meio
相关产品推荐
相关产品推荐

