SuperAPI AI 工具集

httpx

编程与开发

查看项目

更新于 10-15 20:13

技能介绍

用途:httpx 用于在 Python 中发起 HTTP 请求,支持同步与异步两种客户端,适合需要现代类型、HTTP/2 或异步并发的项目。

主要能力:提供 httpx.Client 与 httpx.AsyncClient;可配置连接池(httpx.Limits 的 max_connections、max_keepalive_connections、keepalive_expiry);可设置细分超时(httpx.Timeout 的 connect、read、write、pool),对应 ConnectTimeout、ReadTimeout、WriteTimeout、PoolTimeout、TimeoutException 异常;通过 http2=True 启用 HTTP/2(需 httpx[http2]),可用 response.http_version 查看协商结果;支持自定义 transport 与 MockTransport。

必要用法:生产环境务必设置超时,可复用单个 Client: with httpx.Client(timeout=timeout) as client: response = client.get("https://api.example.com/data") 异步场景使用 async with httpx.AsyncClient() as client,并以 await 发起请求,避免在异步函数中使用同步 Client 阻塞事件循环。长期存活的 Client 需在应用关闭时调用 close()。重试仅适用于幂等请求,资料给出了带抖动的指数退避示例,并强调不要重试非幂等操作,httpx 本身未内置 urllib3.Retry 式重试。

测试:可用 respx 在传输层 mock,或用 httpx.MockTransport 注入失败传输以验证重试次数。

限制与注意:HTTP/2 需额外依赖;不同步与异步客户端不可混用;未设置超时可能导致连接永久挂起;每请求新建 Client 会破坏连接池并泄漏连接。客户端选型上,requests 适合简单同步脚本,aiohttp 适合异步服务端,urllib.request 适合零依赖场景,httpx 适合需要异步或 HTTP/2 的现代应用。价格、平台与更多细节暂未提供。