HTTPX是新一代网络请求库。它具有以下特征:
基于Python3的HTTP请求模块;
它可以发送同步请求,但也会发送异步请求;
支持HTTP1.1和HTTP2;
可以将请求直接发送到WSGI,ASGI等应用程序。
HTTPX需要使用Python3.6+,并且异步请求需要为Python3.8+。
要使用HTTP/2,您需要安装HTTP2的相关依赖项。
结果:
结果:
您也可以通过响应消息来访问状态代码
结果:
结果:
结果:
结果:
结果:
结果:
该集合的超时报告错误,httpx.ReadTimeout:计时
结果:
结果:
结果:
在基本用法中,HTTPX的每个请求都必须建立新连接。当请求的数量很大时,效率将变得较差,也会导致浪费资源。
HTTPX提供客户端以解决此问题,该问题是根据HTTP连接池实现的。如果您在同一网站上发送多个请求,则客户端将继续维护原始的TCP连接以提高效率。
结果:
您可以在httpx.client()中放置标题,cookie,params和其他参数之类的参数,并在客户端下的请求中共享这些配置参数
结果:
可以看出,R1的请求头包含来自客户的启用,R2的请求标题不仅包含标头2的内容,还包含Headers1的内容。最终请求头等效于Headers1和Headers2作为最终请求标题。
HTTPX可以通过代理参数使用HTTTP代理。它还可以使用不同的代理分别处理HTTP和HTTPS协议的请求
HTTPX的代理参数代理只能添加到httpx.client(),并且不能添加到client.get()
在默认情况下,httpx已进行了严格的超时,并且在5秒内无响应的超时
普通请求:
客户端实例:
普通请求:
客户端实例:
当请求HTTPS协议的链接时,发出的请求需要由主机身份认证,因此SSL证书需要认证。如果您想自定义CA证书,则可以使用验证参数
或禁用SSL认证
默认情况下,HTTPX使用标准同步请求方法。如果要使用异步请求,您也可以使用提供的异步客户端来处理异步请求
使用异步客户端的使用比使用多线程发送请求更有效,该请求可以更好地反映明显的性能优势,并且还支持诸如WebSocket之类的长连接
使用异步/等待执行异步请求的相关处理
结果:
结果:
结果:
由于执行异步,印刷我是无序的