新闻详情

新闻详情

首页 / 资讯中心 / 详情

异步http接口调用库:httpx

发布时间:2026/10/1 11:53:53来源:尧图网络
异步http接口调用库:httpx
现在的人对于通过http协议去调用接口的情况是非常熟悉的。有很多人都知道, 比如一些用于测试http接口的工具库或者框架都是在它的基础上面开发出来的, 不过今天要跟大家介绍的则是另外一款专门用来测试http接口的框架, 也就是我们所说的这个httpx。它的API和高度一致。:安装 pip install httpxhttpx 简单使用当然, 这个情况是不支持x这个形式的。import httpxr httpx.get(http://httpbin.org/get)print(r.status_code)print(r.json())执行结果200{args: {}, headers: {Accept: */*, Accept-Encoding: gzip, deflate, Host: httpbin.org, User-Agent: python-httpx/0.12.1, X-Amzn-Trace-Id: Root1-5ea5b58c-e446c44392ea090809e8a4bc}, origin: 113.97.33.224, url: http://httpbin.org/get}import httpxpayload {key1: value1, key2: value2}r httpx.post(http://httpbin.org/post, datapayload)print(r.json())执行结果{args: {}, data: , files: {}, form: {key1: value1, key2: value2}, headers: {Accept: */*, Accept-Encoding: gzip, deflate, Content-Length: 23, Content-Type: application/x-www-form-urlencoded, Host: httpbin.org, User-Agent: python-httpx/0.12.1, X-Amzn-Trace-Id: Root1-5ea5b61d-1871d10e80b8324e48ea475e}, json: None, origin: 113.97.33.224, url: http://httpbin.org/post}你会察觉到这实际上几乎是完全相同的状况, 不同的主要点在于这里已经把原先的某个元素替换成了httpx这个内容。在进行异步调用的时候, 我们会用到httpx。我们接下来要去认识一下httpx这个工具的异步调用这一回事。import httpximport asyncioasync def main():async with httpx.AsyncClient() as client:resp await client.get(http://httpbin.org/get)result resp.json()print(result)asyncio.run(main())此处实际应用了async以及await等功能模块, 关于这些异步相关内容的更多详情, 您可以参考我此前所撰写的有关异步I/O基础概念的入门介绍部分。异步的这种调用方式, 它的优势在哪里呢?我们发现, 要是采用异步的话, 接口调用会变得更复杂一些, 那为啥还要用异步呢? 当你需要去调用1000次接口的时候, 异步调用可以让你的整体速度变快。接下来我们通过一个简单的例子来做个对比看看。以我flask开发的简单接口为例子为了使得测试工作的过程能够获得更加准确的结论, 我所采取的具体措施是将flask服务直接部署在了另一台计算机设备上面, 这一操作实现了测试机与被测服务之间的相互分离状态。# 同步调用import timeimport httpxdef make_request(client):resp client.get(http://192.168.0.7:5000)result resp.json()# print(result)assert result[code] 10200def main():session httpx.Client()# 1000 次调用for _ in range(1000):make_request(session)if __name__ __main__:# 开始start time.time()main()# 结束end time.time()print(f同步发送1000次请求耗时{end - start})结果...同步发送1000次请求耗时52.948561906814575# 异步调用import httpximport asyncioimport timeasync def request(client):resp await client.get(http://192.168.0.7:5000)result resp.json()# print(result)assert result[code] 10200async def main():async with httpx.AsyncClient() as client:# # 开始# start time.time()# 1000 次调用task_list []for _ in range(1000):req request(client)task asyncio.create_task(req)task_list.append(task)await asyncio.gather(*task_list)if __name__ __main__:#开始start time.time()asyncio.run(main())# 结束end time.time()print(f异步发送1000次请求耗时{end - start})结果:...异步发送1000次请求耗时3.903275728225708把httpx拿来用作发起请求的工具的话, 同步方式的请求体验和异步方式的请求体验之间的区别, 那真是相当的大。以上的这些例句, 目前已经放置到了-API-test这个项目里面去了。总结* 这里只是为了拿非异步框架的 flask 当作接口服务端来进行对比, 如果把接口服务同样更换成前面介绍的 snaic 异步框架的话, 上面这两组测试对比就不那么明显了, 因为 snaic 的异步接口服务在处理同步请求方面会更快一些, 我们在安装 snaic 的时候就会发现的, 它也同样集成了 httpx 这个库。为什么要学习异步技术, 因为在我们公司之中存在大量的接口采用了异步调用这一方式。所以我希望可以把这个概念真正地搞清楚明白, 理由就是这么简单直接。一定要保持在工作中对于相关技术知识的好奇心。拿在火车站买票这个场景来说, 火车站本身被视为一个进程, 而售票窗。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

数据库被注入木马后恢复:用TaoToken统一Key排查异常连接与数据回滚 2026/10/1 13:26:38

数据库被注入木马后恢复:用TaoToken统一Key排查异常连接与数据回滚

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
RK3576启动链深度解析:Maskrom与Loader协同机制 2026/10/1 13:26:38

RK3576启动链深度解析:Maskrom与Loader协同机制

1. 项目概述:RK3576“变砖”不是玄学,是启动链上某个环节的彻底失联你手里的RK3576开发板突然不亮灯、不识别USB、串口无任何输出——连最基础的AT指令都喂不进去,烧写工具报错“device not found”或“no response”,这时候圈内人…

阅读更多 →
EtherCAT与FSoE实战:从分布式时钟同步到安全通信,以H5U带24轴为例 2026/10/1 13:26:37

EtherCAT与FSoE实战:从分布式时钟同步到安全通信,以H5U带24轴为例

说句实在话,EtherCAT 这个名字在工控圈里已经不算新鲜了,但真正把它吃透的人并不多。很多做 PLC 的老工程师最开始对它的态度是怀疑的——以太网嘛,传传文件、连个电脑还行,拿来控制伺服轴,周期能稳吗?直到…

阅读更多 →
01背包压维实战:从二维MLE到一维倒序,彻底解决空间与效率问题 2026/10/1 13:26:31

01背包压维实战:从二维MLE到一维倒序,彻底解决空间与效率问题

先问你一个问题:如果一道01背包题目的物品数量是5000,背包容量是10000,你会怎么写状态数组?很多人的第一反应还是dp[5001][10001],然后提交,然后MLE。即使内存侥幸过关,时间也往往卡在超时边缘。…

阅读更多 →
航拍校园操场人体检测:YOLO数据集构建与训练全流程实战 2026/10/1 13:26:31

航拍校园操场人体检测:YOLO数据集构建与训练全流程实战

1. 航拍视角下的人体检测,到底难在哪里先把场景说清楚。航拍校园操场人体检测,指的是用无人机或者高位固定摄像头,从几十米到上百米的高度俯拍操场、跑道、球场这类开阔场地,然后在画面里把每一个人框出来。听起来跟普通的目标检测…

阅读更多 →
TongWeb 7.0.4.9企业版Linux安装部署与License激活实战 2026/10/1 13:26:31

TongWeb 7.0.4.9企业版Linux安装部署与License激活实战

TongWeb 在不少单位的软件清单里属于必备件,尤其是近两年做系统迁移和中间件国产化替换的项目,几乎绕不开它。这次我拿到的是 TongWeb 7.0.4.9 企业版,操作系统是 Linux 服务器。很多刚接触这套环境的同事第一反应是“这不就是个 tomcat 吗”…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉