分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

locust压测非http协议

发布时间:2023-09-06 02:24责任编辑:林大明关键词:http

Locust是以HTTP为主要目标构建的。

但是,通过编写触发器request_success和 request_failure事件的自定义客户端,可以轻松扩展到任何基于请求/响应的系统的负载测试 。

我们知道locust默认内部只封装httplocust;使用的是requests中的session进行了封装;

那么问题来了,如果我想测试其它协议怎么办,比如websocket  , grpc等等。

在开始之前,需要了解的几点:

1>self.client: locust协议入口实例,我们只要重写一个实例给client即可。

2>以下两个事件,用来收集报告信息,否则写好后执行你会发现收集不到性能数据

events.request_failure.fire()
events.request_success.fire()

具体步骤:

1>编写WebSocketClient类(主要用来替换掉self.client的http实例)

class WebSocketClient(object): ???def __init__(self, host): ???????self.host = host ???????self.ws = websocket.WebSocket() ???def connect(self, burl): ???????start_time = time.time() ???????try: ???????????self.conn = self.ws.connect(url=burl) ???????except websocket.WebSocketTimeoutException as e: ???????????total_time = int((time.time() - start_time) * 1000) ???????????events.request_failure.fire(request_type="websockt", name=‘urlweb‘, response_time=total_time, exception=e) ???????else: ???????????total_time = int((time.time() - start_time) * 1000) ???????????events.request_success.fire(request_type="websockt", name=‘urlweb‘, response_time=total_time, response_length=0) ???????return self.conn ???def recv(self): ???????return self.ws.recv() ???def send(self, msg): ???????self.ws.send(msg)

注意:该类中定义了,websocket的常用操作,链接、接收、发送;最主要是events.request_failure.fire和events.request_success.fire这两个用来收集性能数据,如果不写

报告收集不到性能数据。

上边代码只是以websocket举例,其它协议也一样,只要注意收集性能数据就可以。当然也可以不写在这里。这个看代码怎么写了。

2>重写一个HttpLocust类,我们这里叫做WebsoketLoscust类

class WebsocketLocust(Locust): ???def __init__(self, *args, **kwargs): ???????super(WebsocketLocust, self).__init__(*args, **kwargs) ???????self.client = WebSocketClient(self.host)

注意:WebsocketLocust从Locust继承; 这里主要是将self.client重新实例成,我们第一部写好的websocketClient实例。 

这样一来我们通过self.client.xxxx就可以使用其方法

3>编写TaskSet类

locust压测非http协议

原文地址:https://www.cnblogs.com/yhleng/p/10025465.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved