小门板儿

Menu

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.7Python 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

;

— 于 共写了2344个字
— 标签:

评论已关闭。