> 技术文档 > HTTPSConnectionPool(host=‘openaipublic.blob.core.windows.netport=443‘): Max retries exceeded with ur_connection object at 0x7fe7bf444880>: failed to re

HTTPSConnectionPool(host=‘openaipublic.blob.core.windows.netport=443‘): Max retries exceeded with ur_connection object at 0x7fe7bf444880>: failed to re


Python 对接验证失败问题分析与解决方法

🔍 一、错误信息回顾

验证失败,请检查参数是否正确:HTTPSConnectionPool(host=\'openaipublic.blob.core.windows.netport=443\'):Max retries exceeded with url: /encodings/cl100k base.tiktoken(Caused by NameResolutionError( \"\": Failed to resolve \'openaipublic.blob.core.windows.net\' (Errno -3 Temporary failure in name resolution)))

🧠 二、问题定位分析

✅ 错误关键词提取:

  • HTTPSConnectionPool: 使用了 urllib3 库发起 HTTPS 请求。
  • host=\'openaipublic.blob.core.windows.netport=443\': 端口号未正确分隔。
  • NameResolutionError: 域名解析失败。
  • Errno -3: 表示临时性 DNS 解析失败。

🎯 核心问题总结:

你的程序在尝试访问微软 Azure 上托管的资源时,出现以下一种或多种情况:

  1. URL 或 host 参数格式错误
  2. DNS 解析失败
  3. 网络不通或防火墙拦截
  4. 目标服务器暂时不可用

🛠️ 三、解决步骤详解

✅ 步骤 1:检查代码中请求 URL 是否正确

确保你在调用 urllib3 或相关库时,传递的 host 和 port 是正确的格式。例如:

import urllib3http = urllib3.PoolManager()response = http.request(\'GET\', \'https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken\')

✅ 正确格式应为完整的 URL,或者至少 host 和 port 分开传参:

from urllib3 import HTTPSConnectionPoolpool = HTTPSConnectionPool(host=\'openaipublic.blob.core.windows.net\', port=443)

⚠️ 错误写法(导致 Errno -3):

HTTPSConnectionPool(host=\'openaipublic.blob.core.windows.netport=443\') # ❌ port 没有正确分隔

✅ 步骤 2:测试域名能否解析(DNS)

打开终端或命令行,执行:

ping openaipublic.blob.core.windows.net

如果返回类似:

ping: unknown host openaipublic.blob.core.windows.net

说明当前环境无法解析该域名,可能是 DNS 配置问题。

✔️ 解决方法:
  • 更换 DNS 服务器,比如设置为:
    • Google DNS: 8.8.8.88.8.4.4
    • Cloudflare DNS: 1.1.1.1

✅ 步骤 3:检查网络连接是否正常

你可以尝试访问其他网站来确认整体网络是否正常:

curl https://www.google.com

如果失败,可能是本地网络问题,尝试重启路由器或切换网络。


✅ 步骤 4:检查是否有防火墙或代理限制

如果你在公司网络、学校网络或某些特殊环境中,可能会被限制访问某些外部资源。

✔️ 尝试方案:
  • 关闭本地防火墙或杀毒软件测试
  • 设置系统代理(如有需要)
  • 使用 curl 或浏览器直接访问该链接进行测试:
curl -v https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken

✅ 步骤 5:重试或更换下载源(针对 tiktoken 文件)

tiktoken 在首次加载时会从 Azure 下载模型文件,如果你本地能联网但偶尔出错,可以尝试:

方法 A:清除缓存后重试
rm -rf ~/.cache/tiktoken/

然后重新运行代码,让其再次尝试下载。

方法 B:手动下载并缓存

你可以手动下载这个文件到本地:

wget https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken -O cl100k_base.tiktoken

然后将文件放到缓存目录下(路径可能不同):

mkdir -p ~/.cache/tiktoken/cp cl100k_base.tiktoken ~/.cache/tiktoken/

✅ 步骤 6:联系网络管理员或服务商

如果你确定上述方法都无法解决,并且你是:

  • 公司内网用户
  • 教育网用户
  • 使用代理或翻墙工具

请联系网络管理员,确认是否对 Azure 相关域名做了封锁或限制。


🧪 四、附加建议:Python 中使用 requests 替代测试

如果你使用的是底层库(如 urllib3),也可以改用更易用的 requests 进行测试:

import requestsurl = \"https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken\"response = requests.get(url)if response.status_code == 200: print(\"成功下载\")else: print(\"失败,状态码:\", response.status_code)

这有助于快速判断问题是出在网络层还是业务逻辑层。


✅ 五、总结

问题类型 解决方案 URL 格式错误 检查 host/port 分隔符,使用完整 URL DNS 解析失败 更换 DNS,检查 ping 网络不通 测试 curl/google 是否通 防火墙/代理限制 关闭防火墙或配置代理 服务不可用 手动下载文件并缓存 依赖库问题 检查 tiktoken 版本或使用 requests