HTTPX:Python 的下一代 HTTP 客户端
HTTPX:Python 的下一代 HTTP 客户端
Python 社区常用的 requests 库,已经有了 15,293 个 Star:

但 requests 只支持同步调用,也没有 HTTP/2 支持。这两个限制在高并发场景下会成为瓶颈。
HTTPX 就是来解决这些问题的。它是 encode 团队开发的 Python HTTP 客户端库,API 设计与 requests 高度兼容,迁移成本很低。

HTTPX 的核心特性:
- 同时支持 HTTP/1.1 和 HTTP/2
- 提供同步和异步两套 API
- 内置命令行客户端
- 与 requests API 高度兼容,迁移成本低
- 可以直接请求 WSGI/ASGI 应用
- 完整的类型注解,100% 测试覆盖
- 所有请求都有严格的超时控制
HTTPX 继承了 requests 的全部标准功能:Keep-Alive 连接池、Cookie 持久化、SSL 验证、Basic/Digest 认证、代理支持、流式下载、分块请求等。
安装
pip install httpx
需要 HTTP/2 支持:
pip install httpx[http2]
需要 SOCKS 代理:
pip install httpx[socks]
要求 Python 3.9 以上。
基本用法
代码风格和 requests 几乎一致:
>>> import httpx
>>> r = httpx.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
原来用 requests 写的代码,把 import 换成 httpx 就能跑。
命令行使用
安装 CLI 组件后可以直接在终端发请求:
pip install 'httpx[cli]'
httpx http://httpbin.org/json
终端里直接看到请求结果,调试接口时比打开浏览器方便。
异步支持
HTTPX 原生支持 async/await:
async with httpx.AsyncClient() as client:
r = await client.get('https://www.example.org/')
print(r.status_code)
需要并发请求时,异步接口比同步逐个调用快得多。requests 要实现类似功能需要借助 aiohttp,HTTPX 直接内置了。
WSGI/ASGI 直接调用
HTTPX 可以直接对 WSGI 或 ASGI 应用发请求,写测试时不用启动服务器,直接传入应用对象就行。
底层传输层用的是 httpcore,SSL 证书来自 certifi,异步库检测来自 sniffio,各组件分工明确。
GI 或 ASGI 应用发请求,写测试时不用启动服务器,直接传入应用对象就行。
底层传输层用的是 httpcore,SSL 证书来自 certifi,异步库检测来自 sniffio,各组件分工明确。
更多推荐



所有评论(0)