urllib3从v1升级到v2后Connection reset by peer问题的调试方法
urllib3升级至2.x版本后出现Connection reset by peer问题的排查建议请求
- 背景:使用urllib3 1.x版本多年,升级到
urllib3>=2.0.0后,原本正常的请求开始失败,问题仅出现在某一特定站点,其他HTTPS端点(包括带基础认证的HTTPBin)均可正常请求。 - 实际场景使用带HTTPBasicAuth的requests库,简化为以下基础代码仍触发问题:
import urllib3 c = urllib3.PoolManager() url = "HTTPS-endpoint-here" r = c.request('GET', url)
- 已完成的排查:
- 经SSL Labs验证,目标站点证书配置正常,支持TLS 1.2及TLS 1.1,不支持TLS 1.3(urllib3 v2默认支持TLS 1.2,理论无影响)
- 在Ubuntu 20.04/22.04系统上测试了Python 3.11.1和3.11.2版本
- 安装pyopenssl后问题仍未解决
- 当前环境信息:
{ "chardet": { "version": null }, "charset_normalizer": { "version": "2.0.10" }, "cryptography": { "version": "" }, "idna": { "version": "3.3" }, "implementation": { "name": "CPython", "version": "3.11.1" }, "platform": { "release": "5.15.0-88-generic", "system": "Linux" }, "pyOpenSSL": { "openssl_version": "", "version": null }, "requests": { "version": "2.31.0" }, "system_ssl": { "version": "1010106f" }, "urllib3": { "version": "2.0.7" }, "using_charset_normalizer": true, "using_pyopenssl": false }
更新补充
以下代码在urllib3 1.26.18版本可正常连接(预期返回HTTP 401),但升级到2.0.7后立即抛出Connection reset by peer异常:
import urllib3 c = urllib3.PoolManager() url = "https://api.hicargo.com/BoxDocs/UK/JobDocs/HE630819/99054-77 4500187758.pdf" r = c.request("GET", url) print(r.status)
寻求针对该问题的下一步排查建议。
内容的提问来源于stack exchange,提问作者Steve Mapes
相关产品推荐
相关产品推荐

