如何解决Azure连接错误:Failed to establish a new connection: [Errno 11001] getaddrinfo failed
解决方案
核心错误分析
getaddrinfo failed属于DNS解析失败,意味着程序无法将Azure Cognitive Search的端点域名转换为IP地址。由于blob.py能正常运行,说明Azure认证、网络出口整体正常,问题集中在搜索服务的配置或网络限制上。
排查步骤
核对搜索服务端点格式
确认代码中使用的Azure Cognitive Search端点严格符合格式:https://<你的搜索服务名称>.search.windows.net,检查是否存在拼写错误、多/少字符(比如末尾多了斜杠)、服务名称与Azure门户中创建的不一致。检查搜索服务的网络防火墙设置
登录Azure门户,找到你的Cognitive Search服务:- 进入「网络」->「防火墙和虚拟网络」
- 确认是否添加了当前机器的公网IP到允许列表,或者是否设置为「允许所有网络访问」(测试阶段可临时开启验证)
- 排除公司/家庭网络防火墙拦截搜索服务域名的可能,可尝试用
curl -v https://<你的搜索服务端点>在终端测试连接
验证认证参数的一致性
对比blob.py的认证逻辑:- 如果使用
DefaultAzureCredential,确保环境变量AZURE_SEARCH_SERVICE_ENDPOINT已正确设置,或代码中硬编码的端点无误 - 若使用API密钥认证,确认搜索服务的管理员密钥复制正确,没有多余空格或字符
- 如果使用
排查依赖库版本兼容性
- 运行
pip list | grep azure查看所有Azure相关库版本,确保azure-search-documents与azure-core版本兼容(例如教程指定azure-search-documents==11.4.0时,azure-core需≥1.26.0) - 尝试创建全新虚拟环境,仅安装教程要求的依赖包,避免现有环境的版本冲突
- 运行
内容的提问来源于stack exchange,提问作者Erik Lindquist
相关产品推荐
相关产品推荐

