locust快速执行模式-FastHttpUser
一、前言
Locust 默认客户端使用的是python-requests。它提供了许多 Python 开发人员都熟悉的很好的 API,并且维护得很好;但是,如果我们的测试规模非常大,数据量非常大,这个时候,我们就可以使用Locust官方给出的更快的HTTP client的实现,它使用了geventhttpclient代替了requests,官方称,它能提升5-6倍的并发量。
备注:
1、Locust的施压原理是基于用户,主要是用到了CPU,而不是jmeter的多进程、线程的模式(用的是内存);
2、在负载生成器CPU没有过载的情况下,FastHttpUser和HttpUser基本相同,更推荐使用HttpUser;
3、如果locust脚本在执行HTTP请求时花费大量的CPU时间,使用FastHttpUser将会得到显著的性能提升
简单了解geventhttpclient
1、geventhttpclient专门为高并发、流传输和支持HTTP 1.1持久连接而设计。
2、它旨在有效地从REST API和Twitter之类的流API中提取信息。
3、默认情况下,提供SSL支持。
① geventhttpclient取决于证书CA Bundle。 ② 这是与Requests代码库一起提供的相同的CA Bundle,它是从Mozilla Firefox的规范集衍生而来的。
4、支持Python 2.7和Python 3.4+。不再支持Python 2.6。
注:官方不建议将SSL / TLS与python 2.7.9一起使用。
2、如何使用FastHttpUser
只需继承 FastHttpUser 而不是 HttpUser:
from locust import task, FastHttpUser
class MyUser(FastHttpUser):
@task
def index(self):
response = self.client.get("/")
FastHttpUser与HttpUser(python-requests)相比,使用的是 (geventhttpclient) 这个客户端,
所以:
① 速度比HttpUser 快;
②功能比HttpUser 弱。
2.1、FastHttpUser类
1、定义FastHttpUser 类
class FastHttpUser(environment)
2、参数及定义
传递给FastHttpSession的参数 connection_timeout: float= 60.0
#参数传递给FastHttpSession。默认值为True,表示不进行SSL验证。 insecure: bool= True
#参数传递给FastHttpSession。默认值5,表示4次重定向。 max_retries: int= 1
#参数传递给FastHttpSession。默认值1,表示零重试。 max_redirects: int= 5
#传递给FastHttpSession的参数 network_timeout: float= 60.0
2.2、 FastHttpSession类
1、参数和定义
#发送get请求 get(Path,**kwargs)
# 发送head请求 head(Path,**kwargs)
# 发送option请求 option(Path,**kwargs)
# 发送patch请求 patch(Path,data = None,**kwargs)
# 发送post请求 post(Path,data = None,**kwargs)
# 发送put请求 put(Path,data = None,**kwargs)
#发送http请求并返回loucst.contrib.fasthttp.FastResponse 对象 request(method, path, name=None, data=None, catch_response=False, stream=False,headers=None, auth=None, json=None, allow_redirects=True, **kwargs)
request方法里面的参数:
①method: 新的request 方法;
②path:请求主机地址,url;
③name:可选参数,可以指定为在Locust的统计信息中用作标签,而不是URL路径;
④data:可选参数,要在请求正文中发送的字符串/字节;
⑤catch_response:可选参数,如果已设置,则可用于发出请求,以返回上下文管理器以用作with语句的参数。可自行进行标记,例如200可以设置Success,也可以设置成Fail。
⑥stream:可选参数,
如果设置成Ture,则不会立即使用响应主体,而是可以通过访问Response对象上的stream属性来使用它;
如果设置成False,在Locust报告的请求时间中不会考虑下载响应内容的时间。
⑦headers:与请求一起发送的HTTP headers字典;
⑧auth:可选参数,身份认证(用户名、密码等);
⑨json:可选参数,在请求正文中发送的字典。
2.3、FastResponse类
定义FastResponse 类
#定义FastResponse 类
classFastResponse(ghc_response, request=None, sent_request=None)
2、参数及定义
① content属性:必要时解压缩并缓冲接收到的正文。注意大文件的情况!
②headers:包含响应标头的类对象字典;
③json():将响应解析为json并返回一个dict;
④text属性:以解码的字符串形式返回响应的文本内容。
参考文档:https://blog.csdn.net/Heney33/article/details/124477264
;
- 下一篇:locust详解
- 上一篇:pytest多进程与多线程