如何让Airflow当前DAG Run完成并禁用后续所有运行?
解决Airflow DAG排空:允许当前运行完成,阻止后续调度
方法1:CLI暂停DAG + 调度器临时配置调整
- 执行CLI命令暂停目标DAG(不要通过UI暂停,UI操作会直接影响待调度任务状态):
airflow dags pause <你的DAG_ID> - 临时修改
airflow.cfg中的catchup_by_default为False,确保调度器不会生成新的调度实例。维护完成后记得改回原配置。 - 等待所有处于
running状态的DAG Run执行完毕,再根据需求恢复DAG调度。
方法2:临时修改DAG的调度间隔为None
- 直接修改DAG代码,将
schedule_interval设置为None后重新部署:default_args = { 'owner': 'airflow', 'start_date': datetime(2023, 1, 1), } with DAG( '你的DAG_ID', default_args=default_args, schedule_interval=None, # 临时改为无调度间隔 catchup=False, ) as dag: # 任务定义代码 - 部署后Airflow不会再生成新的调度实例,当前运行的DAG Run会正常执行完毕。维护结束后,改回原调度间隔(如
'*/30 * * * *')重新部署即可。 - 注意保持
catchup=False,避免恢复调度后触发补跑任务。
方法3:UI手动清理待调度实例 + 暂停DAG
- 进入Airflow UI的DAG详情页,找到「Scheduled Runs」板块,删除所有待触发的调度实例。
- 暂停该DAG,此时正在运行的DAG Run不受影响,会继续执行至完成。
- 维护完成后,恢复DAG调度,系统会自动生成后续的调度实例。
核心注意事项
- 所有操作都要确保DAG的
catchup=False,防止维护结束后出现大量补跑任务。 - 若使用Airflow集群,修改配置后需重启所有调度器节点,确保配置生效。
内容的提问来源于stack exchange,提问作者Raj Rao
相关产品推荐
相关产品推荐

