HTTPX:Python 下一代 HTTP 客户端

文章目录

  • [HTTPX:Python 下一代 HTTP 客户端](#HTTPX:Python 下一代 HTTP 客户端)

HTTPX:Python 下一代 HTTP 客户端

Python 生态中久负盛名的 requests 库,长期占据着 HTTP 客户端的主流位置。而 HTTPX 作为一个后来者,已经积累了 15,277 颗 Star,成为不少开发者的新选择。

HTTPX 是一个全功能的 HTTP 客户端库,面向 Python 3 开发。它在保持 requests 兼容 API 的同时,补足了 requests 的短板。两者 API 设计高度一致,迁移时只需要替换导入语句,大部分代码无需改动。

最核心的一点,HTTPX 同时支持 HTTP/1.1 和 HTTP/2。在 requests 只支持 HTTP/1.1 的背景下,这一特性让它在处理现代 Web 服务时更有优势。HTTP/2 的多路复用能力在高并发场景下能降低连接开销,提升传输效率。

HTTPX 的另一大特点是原生支持异步。它提供标准的同步接口,也提供完整的异步 API。这意味着你既可以用熟悉的同步方式写脚本,也可以在 async/await 场景下直接使用,无需再为异步 HTTP 请求寻找其他库。异步接口的引入让 HTTPX 在爬虫、高并发微服务等场景里更加得心应手。

命令行客户端是 HTTPX 的一个加分项。安装可选依赖后,可以直接在终端里发送 HTTP 请求,查看响应头和响应体:

shell 复制代码
pip install 'httpx[cli]'
httpx https://www.example.org/

基础用法和 requests 基本一致:

python 复制代码
import httpx
r = httpx.get('https://www.example.org/')
print(r.status_code)
print(r.headers['content-type'])
print(r.text)

这种设计降低了迁移成本。如果你熟悉 requests,上手 HTTPX 几乎没有门槛。

除了协议升级和异步支持,HTTPX 还具备以下能力:

直接请求 WSGI 或 ASGI 应用,这对测试 Web 框架很有帮助;全局严格超时控制;完整的类型注解;100% 的测试覆盖率;Keep-Alive 与连接池;Cookie 持久化;SSL 验证;基础与摘要认证;自动解压缩;流式下载;代理支持;分段请求;.netrc 支持等。

这些功能覆盖了日常开发的大部分需求,从简单的 GET 请求到复杂的文件上传、认证和流式处理都能应对。

安装方式简单直接:

shell 复制代码
pip install httpx

如果需要 HTTP/2 支持:

shell 复制代码
pip install httpx[http2]

需要 SOCKS 代理:

shell 复制代码
pip install httpx[socks]

HTTPX 要求 Python 3.9 或更高版本。

依赖方面,HTTPX 底层基于 httpcore 处理传输,使用 h11 实现 HTTP/1.1,配合 certifi、idna 和 sniffio。可选依赖包括 h2(HTTP/2)、socksio(SOCKS 代理)、rich(终端增强)、click(CLI)、brotli 和 zstandard(压缩解码)。模块化的依赖设计让用户只安装自己需要的部分,减少不必要的包体积。

社区生态方面,不少主流 Python 项目已将 HTTPX 作为默认 HTTP 客户端,FastAPI 的测试客户端、某些异步爬虫框架都建立在 HTTPX 之上。

从定位来看,HTTPX 并非要取代 requests,而是在其基础上做现代化扩展。requests 的 API 设计在 Python 社区深入人心,HTTPX 选择继承这一设计,同时补上协议和并发方面的能力缺口。

对于新项目,如果你需要 HTTP/2 或异步支持,HTTPX 是一个值得考虑的选项。对于已有项目,从 requests 迁移到 HTTPX 的成本也相对可控。

TTP/2 或异步支持,HTTPX 是一个值得考虑的选项。对于已有项目,从 requests 迁移到 HTTPX 的成本也相对可控。

相关推荐
2601_9621005412 小时前
python包和模块的内容整理
python·模块·导入·虚拟环境·
二进制漫游记13 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
-今昭-13 小时前
《V2V 迁移实战:将 VMware 虚拟机转为 OpenStack 可用 Glance qcow2 镜像》
开发语言·python
2601_9623815814 小时前
【转】Python渗透测试工具:sqlmap
python·渗透测试·sql注入·sqlmap·数据库安全
用户37215742613514 小时前
如何使用 Python 从 Word 文档中提取图片
python
白山编程大哥16 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
昭昭日月明17 小时前
RAGFlow 入门,不用从零造轮子
python·ai编程
驭渊的小故事17 小时前
网络原理04(http协议详细解析3)(2000详细解析HTTPS的工作原理)
网络·网络协议·http
莓有烦恼吖18 小时前
Vibe Coding 的一些思考
python
小白学大数据18 小时前
超简单:用 Python 让 Excel 飞起来:用 openpyxl 把重复报表整理交给脚本
开发语言·数据库·python·excel