
HTTPX2:Python 新一代 HTTP 客户端,OpenAI SDK 已经全面换装
HTTPX 社区维护放缓后,Pydantic 接手推出了 HTTPX2:requests 兼容 API、HTTP/2 支持、内置命令行客户端,OpenAI Python SDK 也已迁移到它。这是 Python HTTP 生态一次重要的接力。
原文来源:pydantic/httpx2 — Pydantic 团队接棒维护的下一代 Python HTTP 客户端,兼容 requests API、支持 HTTP/2 和异步,OpenAI Python SDK 已迁移到它。
8 月底,两个消息让 Python 的 HTTP 生态有了新主角:一是 pydantic/httpx2 正式成为 HTTPX 的继任者,二是 OpenAI Python SDK 官方迁移指南发布——OpenAI SDK 的同步和异步 HTTP 客户端都已切换到 HTTPX2。
为什么会有 HTTPX2
HTTPX 是过去几年 Python 最流行的 HTTP 客户端之一,在 requests 的基础上补齐了 HTTP/2 和异步支持,FastAPI、OpenAI SDK 等大量库都依赖它,堪称现代 Python 生态的基石之一。但最近一段时间,HTTPX 本身的维护明显放缓。Pydantic 团队接手后以 HTTPX2 的名字继续这个项目,声明会延续原版设计、保持稳定,并按时跟进安全更新——对一个处在无数生产系统关键路径上的库来说,这一点尤其重要。项目在 README 里特别感谢了原作者 lovelydinosaur 和整个 HTTPX 社区:"这个项目没有他们就不会存在。"
HTTPX2 保留了 HTTPX 的全部特性:requests 兼容 API、内置命令行客户端、HTTP/1.1 和 HTTP/2 双支持、同步异步两套接口、直接请求 WSGI/ASGI 应用的能力、严格的超时、全类型注解、100% 测试覆盖。requests 那套熟悉的能力也都在:连接池与会话 Cookie 持久化、浏览器式 SSL 校验、Basic/Digest 认证、优雅的键值 Cookie、自动解压、Unicode 响应体、Multipart 上传、代理支持、流式下载、.netrc 支持、分块请求、国际化域名等等。底层依赖包括 httpcore2(传输层)、h11(HTTP/1.1)、anyio(结构化并发,同时支持 asyncio 和 trio)、truststore(使用操作系统信任库做 SSL 校验)、idna(国际化域名)。
—— 广告 ——
快速上手
安装和 requests 一样简单:
pip install httpx2import httpx2
r = httpx2.get('https://www.example.org/')
r.status_code # 200
r.headers['content-type'] # 'text/html; charset=UTF-8'
r.text # '<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'需要 HTTP/2 就装 pip install httpx2[http2]。命令行客户端是可选依赖:pip install 'httpx2[cli]',装完可以直接 httpx2 --help 从终端发请求,不用再开 REPL。另外一个很实用的能力是直接请求 WSGI 或 ASGI 应用——写测试或者本地联调时,不用起真实服务器就能把请求打进你的应用。
Pydantic 自家的可观测平台 Logfire 与它开箱即用,一行代码给所有请求加上追踪、耗时和状态码:
import logfire
import httpx2
logfire.configure()
logfire.instrument_httpx()
httpx2.get("https://pydantic.dev/")显式的 httpx2.Client() 和 httpx2.AsyncClient() 同样适用,还可以把 instrumentation 限定到单个 client,或者用 capture_all=True 记录完整的请求头和请求体。
OpenAI SDK 迁移了哪些东西
如果你用 OpenAI Python SDK,这个变化其实是隐性的:默认客户端已经换成 HTTPX2,装 openai 就会自动带上,之前随包安装的 httpx 不再附带。绝大多数调用、解析后的响应模型、流式接口、重试和超时行为都不变。
有几个点需要注意。最值得留意的是 TLS 信任库的变化:HTTPX 之前用 certifi 的 CA 证书包,HTTPX2 改用操作系统信任库。在精简容器镜像(没有系统 CA 证书)、企业 TLS 检查代理、依赖自定义 certifi 包的环境里,证书校验可能失败,需要显式配置:
export SSL_CERT_FILE=/path/to/ca-bundle.pem其次,如果你在代码里直接构造了 httpx.Client、httpx.Timeout 这些对象,迁移时把前缀换成 httpx2 即可,对象一一对应(httpx.AsyncClient → httpx2.AsyncClient、httpx.Timeout → httpx2.Timeout、httpx.MockTransport → httpx2.MockTransport 等)。细粒度超时也可以直接传:OpenAI(timeout=httpx2.Timeout(60.0, connect=5.0, read=20.0))。认证处理器和事件钩子收到的是 HTTPX2 的请求/响应对象,第三方插桩、追踪中间件和 auth 集成需要显式支持 HTTPX2。
SDK 还提供了 DefaultHttpx2Client 和 DefaultAsyncHttpx2Client 两个辅助类,保留官方推荐的超时、连接池和重定向默认值,传代理、传输层都走这两个类。模块级配置也一样:openai.http_client = openai.DefaultHttpx2Client()。用原生客户端时,原始响应对象也是 HTTPX2 的——client.models.with_raw_response.list() 返回的 response.http_response 就是 httpx2.Response,流式响应的包装对象同理。SDK 异常(如 APITimeoutError、APIConnectionError)建议照常捕获,只是底层的 transport cause 变成了 HTTPX2 异常。测试方面,用 httpx2.MockTransport 写 mock 就能拦截请求;如果测试套件依赖 RESPX,需要升级到兼容 HTTPX2 的版本——只 patch 旧 HTTPX 的 RESPX 拦不住 SDK 默认的 HTTPX2 客户端。官方还给了一个临时逃生舱:pip install openai httpx 后注入 legacy 客户端,让只兼容 HTTPX 的中间件和 mock 库继续工作——但这是运行时兼容,类型检查会报错,且随时可能移除,新代码不要依赖它。
值得换吗
对普通 Python 开发者,HTTPX2 目前最大的意义是"生态接力":HTTPX 的维护停滞曾经是个隐患,现在有了明确的新归宿,关键路径上的安全更新有人管了。文档方面,httpx2.pydantic.dev 提供了完整的 QuickStart、进阶用法、HTTP/2、异步和 API 参考,还维护了一个第三方集成包列表,迁移时照着查很方便。对 AI 开发者尤其如此——OpenAI SDK 的底层已经押注 HTTPX2,未来各种 AI 工具链的 HTTP 层大概率都会跟进。如果你正在写新的 Python 项目,直接上 HTTPX2 基本没有迁移成本;老项目里如果只是间接依赖 HTTPX,可以等依赖链慢慢升级,不急着动。
© 2026 四月
原文链接:https://www.aprilzz.com/tools/httpx2-next-gen-http-client
相关文章
watermarks-remover:一个剥离 AI 水印的开源工具,上线一周拿下 13K Stars
Anthropic 宣布给所有 Claude 输出加语义水印的同一天,这个 MIT 许可的开源项目出现了——它用三层机制剥离文本统计水印、不可见 Unicode 和文件元数据里的 AI 溯源标记。
Proliferate:让 Claude Code、Codex、OpenCode 并行干活的国产级开源 AI IDE
Proliferate 是一个开源 AI IDE:在同一个工作区里并行运行 Claude Code、Codex、OpenCode、Cursor、Grok 等任意编码 Agent,每个任务有独立的 git worktree、终端和审查状态,还支持完整的自托管部署。
XY:GPU 加速的 Python 交互式绘图库,在浏览器里渲染百万级数据点
Reflex 团队开源的 XY 是一个基于 WebGPU 加速的 Python 可视化库,能在浏览器和 Jupyter 中流畅渲染百万级数据点,性能碾压 Matplotlib 和 Plotly