Airflow 2.1.1配置Scheduler HA触发unsupported pickle protocol:5错误求助
Airflow Scheduler HA 报错排查方案
根因定位
ValueError: unsupported pickle protocol:5为Python版本不兼容导致的序列化报错:Pickle协议版本5是Python 3.8及以上版本的专属特性,你两台部署Scheduler的节点Python版本不一致,其中版本>=3.8的节点往Postgres元数据库写入了协议5序列化的DAG元数据,另一台版本<3.8的节点读取时无法识别该协议,触发报错同时导致先启动的Scheduler失效。
排查步骤
- 分别登录两台Scheduler节点,执行
python3 --version命令检查Python版本,确认是否存在版本差 - 若Scheduler运行在虚拟环境中,激活对应虚拟环境后再次执行
python3 --version,确认虚拟环境Python版本是否一致 - 检查两台节点
airflow.cfg配置文件中core段的pickle_dags参数是否一致:Airflow 2.x版本默认关闭该参数,若你手动开启,会直接将序列化后的DAG存入数据库,放大版本不一致的影响
修复方案
- 统一两台Scheduler节点的Python版本,优先对齐第一台正常运行节点的Python版本,建议使用Python 3.8及以上版本
- 同步所有Airflow相关节点(Scheduler、Worker、WebServer)的Python版本、Airflow版本及所有依赖包版本,避免其他兼容问题
- 若无DAG序列化入库的需求,将
airflow.cfg中pickle_dags参数设为False,要求所有节点本地存储一致的DAG文件,彻底规避跨节点序列化兼容问题 - 修复版本配置后,清理元数据库中已存储的错误序列化DAG数据:删除
dag表中对应报错DAG的记录,重启所有Scheduler服务后Airflow会自动重新加载DAG生成正确元数据
内容的提问来源于stack exchange,提问作者Bharat Chaudhury
相关产品推荐
相关产品推荐

