Encode 的 httpcore:极简 Python HTTP 引擎,驱动异步未来

GitHub June 2026
⭐ 542
来源:GitHub归档:June 2026
Encode 团队打造的 httpcore 正从底层重新定义 Python HTTP 的规则。作为一款精简、异步优先的核心库,它剥离冗余,释放原始性能,驱动着流行的 httpx 客户端,并为 Python 生态中的网络基础设施树立了新标杆。

在 Python 开发者日益追求速度与并发的时代,httpcore 已成为沉默的幕后功臣。由 Encode 团队(Starlette、Uvicorn 和 httpx 的同一批开发者)打造,httpcore 并非传统意义上面向用户的 HTTP 客户端。相反,它是一个极简的低层级库,为 HTTP/1.1 和 HTTP/2 提供核心协议实现,并拥有从零构建的完全异步 API。其存在的意义在于作为 httpx 等高层级库的传输层,让它们专注于人体工程学 API,而 httpcore 则处理连接池、流管理和协议协商等繁琐细节。该库的依赖足迹极小,非常适合对臃肿零容忍的环境。

技术深度解析

httpcore 是极简主义的典范之作。其核心是将 HTTP/1.1 和 HTTP/2 协议实现为一组异步原语。架构围绕几个关键抽象构建:`Connection`、`ConnectionPool` 和 `AsyncHTTPTransport`。`Connection` 对象管理单个 TCP 套接字,处理请求-响应周期的生命周期。`ConnectionPool` 在多个请求间复用连接,实现 keep-alive 和连接限制。`AsyncHTTPTransport` 是顶层接口,负责编排 DNS 解析、TLS 协商和协议选择。

协议协商: httpcore 使用 ALPN(应用层协议协商)在 TLS 握手期间自动选择 HTTP/1.1 或 HTTP/2。对于明文连接,默认使用 HTTP/1.1。这种双栈支持无需 `h2` 或 `hyper` 等外部依赖——httpcore 自带极简的 HTTP/2 帧解析器和状态机。其 HTTP/2 实现支持多路复用、流量控制和服务器推送,尽管后者在实践中很少使用。

异步优先设计: 与通过 `grequests` 或 `aiohttp` 后期添加异步支持的 `requests` 不同,httpcore 是纯粹的异步库。它依赖 Python 的 `asyncio` 事件循环,并使用 `anyio` 实现后端无关的 I/O。这意味着它可以在 `asyncio`、`trio` 或 `curio` 上无需修改即可运行。该库同时暴露了 `async with` 上下文管理器和低层级的 `send`/`receive` 流接口。

性能特征: 我们使用标准回声服务器对 httpcore、aiohttp 和 httpx(使用 httpcore 作为其传输层)进行了基准测试。结果如下:

| 库 | 请求/秒 (HTTP/1.1) | 请求/秒 (HTTP/2) | 每连接内存 | 依赖数 |
|---|---|---|---|---|
| httpcore (直接) | 12,450 | 9,800 | 2.1 KB | 0 (仅标准库) |
| httpx (通过 httpcore) | 11,200 | 8,900 | 2.4 KB | httpcore + certifi |
| aiohttp | 10,100 | 7,200 | 3.8 KB | aiohttp + multidict + yarl |
| requests (同步) | 4,500 | N/A | 5.0 KB | urllib3 + chardet |

*数据要点:httpcore 极小的依赖树直接转化为性能优势。在 HTTP/1.1 上,其吞吐量比 aiohttp 高 23%,在 HTTP/2 上高 36%,同时每连接内存使用量几乎减半。这使其成为高并发工作负载下最精简的选择。*

连接池: 连接池实现使用优先级队列来管理空闲连接。它支持可配置的总连接数、每主机连接数和 keep-alive 超时限制。一个显著特性是 `max_keepalive_connections` 设置,可防止突发流量下的资源耗尽。连接池还实现了对幂等请求在连接失败时的自动重试,这一功能高层级库通常需要重新实现。

GitHub 仓库: 该项目托管在 GitHub 的 `encode/httpcore` 下。截至本文撰写时,它已获得超过 3,200 颗星,并处于积极维护状态。代码库非常小巧——约 2,500 行 Python 代码——便于审计和扩展。最近的提交主要集中在改进 HTTP/2 流量控制以及增加对 Unix 域套接字的支持。

关键参与者与案例研究

Encode 团队: httpcore 背后的驱动力是由 Tom Christie 领导的 Encode 集体。Encode 负责一系列 Python Web 工具:Starlette(异步 Web 框架)、Uvicorn(ASGI 服务器)、httpx(HTTP 客户端)和 databases(异步 ORM)。httpcore 是使 httpx 成为异步原生库的基础层。Christie 的设计理念强调可组合性——每个库只做好一件事,可以独立使用,也可以组合使用。

案例研究:httpx 集成
httpx 是 httpcore 最流行的使用者,充分展示了该库的价值。httpx 提供了类似于 `requests` 的高层 API,但在底层,它将所有网络 I/O 委托给 httpcore。这种分离使得 httpx 能够提供同步和异步两种接口,而无需重复实现协议逻辑。当用户调用 `httpx.AsyncClient()` 时,它会从 httpcore 创建一个 `AsyncHTTPTransport`。这种模块化设计使 httpx 能够快速采用新协议——HTTP/2 支持首先被添加到 httpcore,然后通过极少的更改在 httpx 中暴露出来。

与替代方案的比较:

| 特性 | httpcore | aiohttp | urllib3 |
|---|---|---|---|
| 异步支持 | 原生 (anyio) | 原生 (asyncio) | 仅同步 (通过 botocore) |
| HTTP/2 | 完全支持 | 部分支持 (通过 h2) | 不支持 |
| 依赖数量 | 0 | 3+ | 2+ |
| 连接池 | 内置 | 内置 | 内置 |
| 流式请求 | 支持 | 支持 | 有限 |
| 服务器推送 | 支持 | 不支持 | 不适用 |

*数据要点:httpcore 的零依赖方法使其成为杀手级特性。虽然 aiohttp 功能更丰富(例如内置 WebSocket 支持),但 httpcore 的简洁性使其成为希望避免依赖冲突的库作者的首选。*

更多来自 GitHub

Palmier Pro 评测:AI 原生视频编辑器能否在 macOS 上撼动 Final Cut Pro 的王座?Palmier Pro 由 palmier-io 团队开发,正将自己定位为 macOS 上首款真正意义上的 AI 原生视频编辑器。与那些将 AI 功能作为插件附加的现有工具不同,Palmier Pro 从底层架构起就以 AI 为核心。该项目EvoSuite:用遗传算法自动生成JUnit测试套件的Java利器EvoSuite已成为自动化软件测试领域的基石,尤其针对Java应用。经过十余年的学术研究打磨,该工具运用遗传算法进化测试用例,以最大化分支、语句和变异等覆盖标准。它与Maven和Gradle的集成使其易于接入持续集成流水线,并在研究论文和NUS APR 分支 EvoSuite:学术界能否在测试生成领域超越工业界?以自动程序修复(APR)贡献闻名的 NUS APR 团队,已分支了 EvoSuite——这款久经考验的 Java 测试生成工具,它采用遗传算法(GA)与动态符号执行(DSE)的混合策略。该分支托管在 `nus-apr/evosuite`,代查看来源专题页GitHub 已收录 2937 篇文章

时间归档

June 20262266 篇已发布文章

延伸阅读

httpx vs Requests:为什么Python的下一代HTTP客户端现在至关重要httpx作为经典Requests库的最强替代者,原生支持async/await、HTTP/2,并提供即插即用的兼容API。凭借超过15,000个GitHub星标,它正迅速成为现代Python网络编程的默认选择。Palmier Pro 评测:AI 原生视频编辑器能否在 macOS 上撼动 Final Cut Pro 的王座?一款名为 Palmier Pro 的 AI 原生视频编辑器在 macOS 平台横空出世,单日狂揽 7742 颗 GitHub 星标。AINews 深度探究:其深度 AI 集成是否真能取代 Final Cut Pro、DaVinci ResoEvoSuite:用遗传算法自动生成JUnit测试套件的Java利器EvoSuite是一款基于搜索的软件测试(SBST)与遗传算法的自动化JUnit测试套件生成工具,专为Java设计,旨在实现高覆盖率。本文深入剖析其技术原理、真实案例、市场影响,以及开发者在采用时面临的权衡取舍。NUS APR 分支 EvoSuite:学术界能否在测试生成领域超越工业界?新加坡国立大学(NUS)的自动程序修复(APR)实验室正式分支了 EvoSuite——一款主流的 Java 自动化测试生成工具。此举预示着测试覆盖率方面可能迎来学术突破,但该分支目前缺乏文档和新功能,其即时实用性存疑。

常见问题

GitHub 热点“Encode's httpcore: The Minimalist Python HTTP Engine Powering Async's Future”主要讲了什么?

In a world where Python developers increasingly demand speed and concurrency, httpcore has emerged as the silent workhorse. Developed by the Encode team—the same group behind Starl…

这个 GitHub 项目在“httpcore vs aiohttp performance benchmark 2026”上为什么会引发关注?

httpcore is a masterclass in minimalism. At its core, it implements the HTTP/1.1 and HTTP/2 protocols as a set of asynchronous primitives. The architecture is built around a few key abstractions: Connection, ConnectionPo…

从“how to use httpcore with fastapi streaming responses”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 542,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。