本地运行Airflow执行Docker命令时报urllib3无法导入OP_NO_TICKET错误
报错原因
该错误由botocore和urllib3的版本冲突触发:你在执行Docker命令时,容器内部自动拉取了v2.0及以上版本的urllib3,而你当前使用的Airflow AWS provider插件依赖的旧版botocore不兼容高版本urllib3——OP_NO_TICKET常量在高版本urllib3的urllib3.util.ssl_模块中已被移除,因此导入时报错。此前运行正常是因为之前的容器镜像中urllib3版本还停留在1.x兼容版本。
修复方案
- 方案1:约束urllib3版本到兼容范围,在你项目的Airflow依赖声明文件(如requirements.txt)中添加规则
urllib3<2.0.0,重新构建Docker镜像后即可正常运行。 - 方案2:升级相关AWS依赖到兼容版本,在容器构建步骤中添加命令
pip install --upgrade apache-airflow-providers-amazon botocore boto3,新版botocore已经适配了高版本urllib3的接口变更。 - 方案3:如果你当前业务不需要用到S3相关功能,可以临时注释掉
vice_mysql_hook.py中导入S3Hook的代码行,先绕过这个依赖冲突完成initdb操作。
内容的提问来源于stack exchange,提问作者KristiLuna
相关产品推荐
相关产品推荐

