HTTPX2是Python的新一代HTTP客户端库,支持HTTP/1.1和HTTP/2协议,提供同步和异步API,并集成命令行客户端。该项目由Pydantic团队接手维护,延续了原HTTPX项目的工作。
正文
好的,这是根据您的要求,对原文进行中文重述后的版本:
标题:GitHub - pydantic/httpx2:下一代 Python HTTP 客户端
核心内容:
HTTPX2 是一个功能全面的 Python HTTP 客户端库,它集成了命令行客户端,同时支持 HTTP/1.1 和 HTTP/2 协议,并提供同步和异步两种 API。
背景与传承:
HTTPX2 是原 HTTPX 项目的延续。由于原项目近期维护活动减少,Pydantic 团队接手并更名为 HTTPX2,旨在为用户提供一条可靠、持续维护的路径,包括及时的安全更新。该项目旨在尊重原版设计,保持稳定,并谨慎地持续演进。
快速上手:
- 安装:使用
pip install httpx2即可安装。 - 基本使用:导入库后,可直接使用
httpx2.get()等方法发起请求,并获取响应状态码、头部信息和文本内容。 - 命令行客户端:通过
pip install 'httpx2[cli]'安装可选依赖后,可在命令行直接使用httpx2命令。
主要特性:
- API 兼容:与广受欢迎的
requests库 API 高度兼容。 - 协议支持:同时支持 HTTP/1.1 和 HTTP/2。
- 异步支持:提供标准的同步接口,也支持异步操作。
- 应用支持:可直接向 WSGI 或 ASGI 应用发起请求。
- 严格超时:所有请求都设有严格的超时机制。
- 类型注解:代码完全类型注解。
- 测试覆盖:拥有 100% 的测试覆盖率。
- 标准功能:包含
requests库的所有标准功能,如连接池、Cookie 持久化、SSL 验证、认证、代理支持、流式下载等。
安装与文档:
- 安装:基础安装为
pip install httpx2;如需 HTTP/2 支持,则使用pip install httpx2[http2]。 - 文档:项目文档位于
https://httpx2.pydantic.dev/,包含快速入门、高级用法、异步支持和 HTTP/2 等章节。
可观测性集成:
HTTPX2 可与 Pydantic Logfire 可观测性平台无缝集成。通过 logfire.instrument_httpx() 一行代码即可为所有请求添加追踪、计时和状态码记录功能。
依赖项:
- 核心依赖:
httpcore2(底层传输)、anyio(并发原语)、truststore(SSL 验证)、idna(国际化域名)。 - 可选依赖:
h2(HTTP/2)、socksio(SOCKS 代理)、rich和click(命令行客户端)、brotli(压缩解码)等。
许可证: BSD 许可。
评论
根据评论内容,主要观点和论据如下:
1. 项目命名易混淆(评论2) - 评论者认为“http2”易被误解为过时的HTTP/2协议,而非httpx项目。 - 关键引用:“I immediately link “http2” with the obsolete http/2 protocol and not the httpx project.”
2. 性能对比:HTTPX vs Aiohttp(评论3、5) - 评论3指出HTTPX在高规模系统中性能远不如Aiohttp,差异显著。 - 关键引用:“People should be aware how much worse HTTPX performs versus Aiohttp. For high scale systems it makes a massive difference” - 评论5直接提问“aiohttp vs httpx2?”,暗示关注两者性能对比。
3. 对Python HTTP库过多的困惑(评论4) - 评论者质疑为何需要多个请求库(如requests、httpx、httpx2),认为HTTP请求已成熟,改进现有库即可。 - 关键引用:“What’s the point of switching libraries? ... What prevents someone from just improving the existing library’s performance?”
4. 推荐替代库(评论6) - 评论者认为niquests是比httpx更好的选择。 - 关键引用:“I feel like it has always been such a better package”
5. 其他(评论1、7) - 评论1提供相关链接,评论7为简短正面评价“Cool project bro”。