性能测试Locust--(7)使用更快的HTTP client提高Locust性能
Locust默认的HTTP客户端使用python-requests。因为requests是一个维护良好的python程序包,它提供了许多python开发人员都熟悉的优质API。因此,在许多情况下,建议使用使用请求的默认HttpLocust
。
但是,如果计划运行大规模的测试,Locust提供了一个替代的HTTP 客户端 FastHttpLocust
,它使用geventhttpclient而不是requests。
该客户端的速度明显提高,其性能是HTTP-requests的5 ~ 6倍。这并不一定意味着每个CPU内核可以模拟的用户数量将自动增加5 ~ 6倍,因为这还取决于负载测试脚本。
总之,如果你的Locust脚本在执行HTTP-requests时花费了大量的CPU时间,那么你可能会看到显著的性能提升。
如何使用FastHttpLocust
代替HttpLocust的子类是FastHttpLocust:
from locust import TaskSet, task, between
from locust.contrib.fasthttp import FastHttpLocustclass MyTaskSet(TaskSet):@taskdef index(self):response = self.client.get("/")class MyLocust(FastHttpLocust):task_set = MyTaskSetwait_time = between(1, 60)
注意
与默认python-requests的HttpLocust相比,FastHttpLocust使用一个完全不同的API实现另一个HTTP client 。因此,取决于如何使用HttpClient,FastHttpLocust可能无法替代HttpLocust。
在FastHttpLocust的客户端实现中,SSL域名检查被关闭。因此,它将允许通过无效的SSL证书而不会产生任何问题。
API
FastHttpSession类
classFastHttpSession(base_url, **kwargs)
init(base_url, **kwargs) | x.init(…) 初始化X,详见 help |
get(path, **kwargs) | 发送GET请求 |
head(path, **kwargs) | 发送HEAD请求 |
options(path, **kwargs) | 发送OPTION请求 |
patch(path, data=None, **kwargs) | 发送PATCH请求 |
post(path, data=None, **kwargs) | 发送POST请求 |
put(path, data=None, **kwargs) | 发送PUT请求 |
request(method, path, name=None, data=None, catch_response=False, stream=False, headers=None, auth=None, **kwargs)
发送HTTP请求并返回
locust.contrib.fasthttp.FastResponse
对象.
Parameters:
- method --创建新Request对象方法。
- path --Path将与已指定的base host URL连接。也可以是完整URL,在这种情况下,将请求完整URL,并且忽略host。
- name --可选,在Locust的统计信息中可以指定一个参数作为标签,而不是URL路径。这可用于将请求的不同URL分组到Locust的统计信息中的单个条目中。
- catch-response --可选,Boolean,如果设置了Boolean参数,可用于使请求返回上下文管理器,以用作with语句的参数。即使响应代码正常(2xx),也可以根据响应的内容将请求标记为失败。
反之亦然,即使没有响应代码(即500或404),也可以使用catch_response来捕获请求,然后将其标记为成功。 - data – 可选,请求体-body, Dict或bytes
- headers – 可选,请求头,Dict
- auth – 可选,验证(用户名,密码)元组,以启用基本HTTP验证。
- stream – 可选,如果设置为true,则不会立即使用响应主体,而是可以通过访问Response对象上的stream属性来使用它。
将流设置为True的另一个作用是:不会将下载响应内容的时间记录到Locust报告中的请求时间。
classFastResponse(ghc_response, request=None, sent_request=None)
content
Unzips, 如有必要,并缓冲接收到的Body. 小心大文件!
headers= None
类似于Dict的对象,包含响应标头
text
以解码字符串的形式返回响应的文本内容(python2上的unicode)
性能测试Locust--(7)使用更快的HTTP client提高Locust性能相关推荐
- Mozilla Firefox 66 将使用更少的内存,提高扩展性能
开发四年只会写业务代码,分布式高并发都不会还做程序员? 即将发布的 Firefox 66 将使用 indexedDB 作为数据存储方式,放弃使用传统的 JSON 文件. 扩展的数据将会自动从 JS ...
- IntelliJ IDEA 2019.3 发布,启动更快,性能更好(新特性解读)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 原文地址:https://www.jetbrains.com/id ...
- Java 启动和停止界面_IntelliJ IDEA 2019.3 发布,启动更快,性能更好(新特性解读)...
点击上方"小哈学Java",选择"星标" 回复"资源",领取全网最火的Java核心知识总结~ 2019.3 11 月 28 IntelliJ ...
- 服务器webpack构建性能,[译] 优化 WEBPACK 以更快地构建 REACT
如果您的 Webpack 构建缓慢且有大量的库 -- 别担心,有一种方法可以提高增量构建的速度!Webpack 的 DLLPlugin 允许您将所有的依赖项构建到一个文件中.这是一个取代分块的很好选择 ...
- 如何使Windows 11更快以获得良好的性能
总结: 如果您已安装Windows 11并使用它一段时间,则可能会受到滞后问题的困扰.如何使Windows 11更快以获得良好的PC性能或如何使Windows 11启动更快? 视窗 11 滞后/缓慢 ...
- 量子计算机性能测试:用镜像电路方法更快、更准确
美国桑迪亚国家实验室的研究人员设计出测量量子计算机性能标准的新方式(图片来源:网络) 近日,美国桑迪亚国家实验室设计出了一种新型基准测试方法,可预测量子处理器准确运行特定程序的可能性.这意味着,研究人 ...
- c+和python哪个快-python比c更快
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python的优点是代码可重用性高和开发速度快,但是时间和内存的使用不如c++. ...
- 更快的Maven来了,我的天,速度提升了8倍!
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 周末被 maven-mvnd 刷屏了,于是我也下载了一个 mvnd 体验了一把.虽 ...
- 比反射更快:委托 第1部分
目录 为什么不用反射? 委托一切 静态属性 获取访问器(get accessors) 设置访问器(set accessors) 改进 属性 改进 索引器 改进 Setters 静态字段 获取静态字段值 ...
最新文章
- react-flux单向数据流
- python32bit改64bit,从32位Python更改64位注册表
- Ubuntu用apt-get安装报错:E: Could not get lock /var/lib/dpkg/lock-frontend - open (11:资源暂时不可用)
- centos安装python3小白_在Linux CentOS7 下安装 python3
- 字节流写数据的两个小问题
- JSP和Servlet里的Cookie处理
- 系统什么时候会用到swap分区?
- 链路层到网络层的数据传递
- python turtle详细教程_python 中的turtle使用教程
- 17th, Jan 2012 今天的时间表
- Spring Boot 应用上传文件时报错
- 创业案例:如何调整股权,才不伤害合伙人感情?
- 2021-2027全球与中国双断面隔离器市场现状及未来发展趋势
- ClickHouse 数据插入、更新与删除操作 SQL
- 从软件工程师到一个愤青IT猎头的经历
- CEC循环生态社区的商业模式瑞波基因XAG
- 芯片TOPS的真实性 - 解释 ( 标量 ,矢量, 张量)
- C2C电子商务模式分析
- 如何做一名优秀的博士生:(二)方法论的转变
- mac安装软件没权限Anywhere ---“XX” is damaged and can’t be opened. You should move it to the Trash 解决方案
热门文章
- 机器人控制系统(一)——前期准备
- antd table 被内容撑开,设置columns宽度失效
- 淘宝技术架构从1.0到4.0的架构变迁
- python 公众号文章发布_分享一个牛逼的Python项目:公众号文章爬虫
- 【调剂】广州大学2023年硕士研究生招生调剂信息公告
- CAD中的各种Polyline
- Android中运行的错误:java.lang.UnsatisfiedLinkError
- 使用CMD修复和恢复病毒感染文件
- 第十章_多线程(2)_线程池原子性并发工具类
- 亚马逊无人机FCC-ID认证范围及流程介绍