Hacker News 中文摘要

RSS订阅

HTTPX2 —— 下一代Python HTTP客户端 -- HTTPX2 – A next-generation HTTP client for Python

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,旨在为用户提供一条可靠、持续维护的路径,包括及时的安全更新。该项目旨在尊重原版设计,保持稳定,并谨慎地持续演进。

快速上手:

  1. 安装:使用 pip install httpx2 即可安装。
  2. 基本使用:导入库后,可直接使用 httpx2.get() 等方法发起请求,并获取响应状态码、头部信息和文本内容。
  3. 命令行客户端:通过 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”。