Python网络请求库httpx详解
1|0简介
httpx是Python新一代的网络请求库,它包含以下特点
- 基于Python3的功能齐全的http请求模块
- 既能发送同步请求,也能发送异步请求
- 支持HTTP/1.1和HTTP/2
- 能够直接向WSGI应用程序或者ASGI应用程序发送请求
2|0安装
httpx需要Python3.6+(使用异步请求需要Python3.8+)
如果需要使用HTTP/2,则需要安装http2的相关依赖
3|0使用
3|1简单使用
httpx与requests
库的基本使用方法几乎是一模一样的
类似的,我们也可以使用POST
, PUT
, DELETE
, HEAD
和OPTIONS
等请求方法,如下
带有请求头和请求参数的请求
结果如下
请求带有cookies
设置超时时间
超过设置时间则报httpx.ConnectTimeout: timed out
3|2高级用法
我们使用上面的请求方式时,httpx每次发送请求都需要建立一个新的连接,然而随着请求的数量增加,整个程序的请求效率就会变得很低。
httpx提供了Client
来解决以上问题,Client
是基于HTTP连接池实现的,这意味着当你对一个网站发送多次请求的时候,Client
会保持原有的TCP连接,从而提升程序的执行效率。
使用Client发送请求
创建一个client对象,使用该对象去做相应的请求
跨请求共享配置
我们可以将headers
、cookies
、params
等参数放在http.Client()
中,在Client
下的请求共享这些配置参数
结果如下
可以看出,r1的请求头包含{'x-auth': 'from-client'}
, r2虽然配置了headers2,但由于里面的headers1和headers2的参数不同,Client
会合并这两个headers的参数作为一个新的headers(如果参数相同,则headers2的参数会覆盖headers1的参数)。
HTTP代理
httpx可以通过设置proxies
参数来使用http代理,我们也可以使用不同的代理来分别处理http和https协议的请求,假设有如下两个代理
上面的代理只是示范,实际场景下请替换成有效的ip代理
还有一点需要注意的是,httpx的代理参数proxies
只能在httpx.Client()
中添加,client.get()
是没有这个参数的。
超时处理
默认情况下,httpx到处都做了严格的超时处理,默认时间为5秒,超过5秒无响应则报TimeoutException
或者关闭超时处理
SSL验证
当请求https协议的链接时,发出的请求需要验证所请求主机的身份,因此需要SSL证书来取得服务器的信任后。
如果要使用自定义的CA证书,则可以使用verify
参数
或者你可以完全禁用SSL验证(不推荐)。
3|3异步支持
默认情况下,httpx使用标准的同步请求方式,如果需要的话,我们也可以使用它提供的异步client来发送相关请求。
使用异步client比使用多线程发送请求更加高效,更能体现明显的性能优势,并且它还支持WebSocket等长网络连接。
异步请求
使用async/await语句来进行异步操作,创建一个httpx.AsyncClient()
对象
同步请求与异步请求的比较
我们来尝试使用同步和异步的方法进行请求,对比两种不同的方法的效率情况。
同步请求
同步发送300次请求,耗时:49.65340781211853
异步请求
异步发送300次请求,耗时:2.5227813720703125 (由于是异步执行的,所以打印的i值是无序的)
从两个例子可以看出,异步请求明显比同步请求的效率高很多。
以上就是httpx库的基本使用方法,想了解更多可以去httpx官方文档中查看。
__EOF__

本文链接:https://www.cnblogs.com/blueberry-mint/p/15250125.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报