使用LocalExecutor,如何不重启Airflow调度器更新配置且不中断任务?
Airflow更新并行任务配置无需等待运行任务的方法
要更新airflow.cfg里的并行任务相关配置,同时不中断或等待正在运行的长耗时任务,可按以下方式操作:
针对Airflow 2.0+版本(推荐)
Airflow 2.0及以上支持核心配置的热重载,无需完全重启调度器:
- 修改
airflow.cfg中目标配置项,比如parallelism(全局最大并行任务数)、max_active_tasks_per_dag(单DAG最大活跃任务数)、max_active_runs_per_dag(单DAG最大活跃运行实例数) - 给调度器进程发送
SIGHUP信号触发配置重载:
这个操作会让调度器重新读取配置,不会中断正在运行的任务,新配置会立即应用到后续调度的任务上。kill -HUP $(ps aux | grep airflow-scheduler | grep -v grep | awk '{print $2}')
验证配置是否生效
执行以下命令查看最新配置值:
airflow config get-value core parallelism
也可以在Airflow UI的「Admin > Configurations」页面查看对应配置项的当前值,确认更新已生效。
针对Airflow 1.x版本
1.x版本热重载支持有限,可采用新旧调度器无缝切换的方式:
- 启动一个新的调度器进程,确保它加载更新后的
airflow.cfg - 给旧调度器进程发送普通终止信号(
SIGTERM),让它进入优雅关闭模式——旧调度器会停止调度新任务,但不会中断正在运行的任务,等所有它负责的任务完成后自动退出 - 新调度器会接管所有新任务的调度,新配置会应用到这些新任务上
补充说明
你之前重启时收到的等待提示,是因为发送了终止信号(比如SIGINT或SIGTERM),触发了调度器的优雅关闭流程。而SIGHUP信号是Airflow专门用于配置重载的信号,不会触发这个等待流程,完美适配你的需求。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

