locust 快速入门--HttpUser与TaskSet

背景:

locust 压测是以模拟一定用户数量完成指定操作实现的压测。
它的基础维度是用户数量(HttpUser),压测时指定多少用户数,就会有相应的HttpUser实例。
用户的操作行为定义,是通过一个个@task装饰的方法实现。

当模拟比较复杂的用户行为时,只是依赖@task,不便于行为管理。这时可以使用TaskSet,完成用户的行为管理。

HttpUser与行为的分开定义:

import os
from logging import getLoggerfrom locust import HttpUser
from locust import TaskSet
from locust import events
from locust import task
from locust.log import setup_loggingsetup_logging("INFO", None)
logger = getLogger(os.path.basename(__file__))class Behavior(TaskSet):def on_start(self):logger.info('开始访问活动')@taskdef index(self):self.client.get("/")def on_stop(self):logger.info('结束访问活动')class MyUser(HttpUser):host = "https://docs.locust.io"tasks = [Behavior]def on_start(self):logger.info('用户开始行动')def on_stop(self):logger.info('用户结束行动')

通过一次压测日志分析程序调用:

配置100个用户,每次增加1个用户的压测:

[2024-01-06 18:28:46,258] Qredsun/INFO/locust.runners: Ramping to 100 users at a rate of 1.00 per second
[2024-01-06 18:28:46,260] Qredsun/INFO/demo.py: 用户开始行动
[2024-01-06 18:28:46,261] Qredsun/INFO/demo.py: 开始访问活动
[2024-01-06 18:28:47,261] Qredsun/INFO/demo.py: 用户开始行动
[2024-01-06 18:28:47,261] Qredsun/INFO/demo.py: 开始访问活动
[2024-01-06 18:28:48,265] Qredsun/INFO/demo.py: 用户开始行动
[2024-01-06 18:28:48,266] Qredsun/INFO/demo.py: 开始访问活动
[2024-01-06 18:28:49,269] Qredsun/INFO/demo.py: 用户开始行动
[2024-01-06 18:28:49,269] Qredsun/INFO/demo.py: 开始访问活动
[2024-01-06 18:28:50,272] Qredsun/INFO/demo.py: 用户开始行动
[2024-01-06 18:28:50,272] Qredsun/INFO/demo.py: 开始访问活动

过程中手动终止压测后,控制台日志输出:

[2024-01-06 18:28:51,132] Qredsun/INFO/demo.py: 结束访问活动
[2024-01-06 18:28:51,132] Qredsun/INFO/demo.py: 用户结束行动
[2024-01-06 18:28:51,133] Qredsun/INFO/demo.py: 结束访问活动
[2024-01-06 18:28:51,133] Qredsun/INFO/demo.py: 用户结束行动
[2024-01-06 18:28:51,134] Qredsun/INFO/demo.py: 结束访问活动
[2024-01-06 18:28:51,134] Qredsun/INFO/demo.py: 用户结束行动
[2024-01-06 18:28:51,135] Qredsun/INFO/demo.py: 结束访问活动
[2024-01-06 18:28:51,135] Qredsun/INFO/demo.py: 用户结束行动
[2024-01-06 18:28:51,136] Qredsun/INFO/demo.py: 结束访问活动
[2024-01-06 18:28:51,137] Qredsun/INFO/demo.py: 用户结束行动

结论:

  1. 依次增加一个用户,先调用HttpUser的on_start
  2. 用户执行操作,先调用TaskSet的on_start
  3. 结束压测,结束操作,调用TaskSet的on_stop
  4. 结束用户实例,调用HttpUser的on_stop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探秘 JAVA 工厂模式:深度详解与实例分析

探秘 JAVA 工厂模式:深度详解与实例分析 前言: 欢迎阅读本篇博客,我们将深入研究 Java 中一种设计模式——工厂模式。工厂模式是一种创建型模式,它提供了创建对象的最佳方式之一,有助于将对象的创建与使用解耦。 1. 工厂模式简…

静态网页设计——旅游景点介绍(HTML+CSS+JavaScript)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1f64y1N7uH/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术:HTMLCSSJS(…

2024.1.7力扣每日一题——赎金信

2024.1.7 题目来源我的题解方法一 哈希表方法二 数组 题目来源 力扣每日一题;题序:383 我的题解 方法一 哈希表 使用哈希表记录ransomNote中所需字符的数量,然后遍历magazine并将哈希表中存在的对应的数量减一 时间复杂度:O(nm…

Code Runner使用外部控制台,运行结束后等待用户输入

问题描述 网上让程序运行结束暂停的方法大多数只有两种: 1.末尾加上system(“pause”) 2.start /k cmd 第一种方法每一个程序都需要在最后加上这条命令很烦; 第二章方法cmd窗口在程序运行结束后不会自动关闭,需要用户手动关闭 我想找到一种…

鸡尾酒效应通俗解释,举一个具体的例子。

问题描述:鸡尾酒效应通俗解释,举一个具体的例子。 问题解答: 鸡尾酒效应(Cocktail Party Effect)是指在嘈杂的环境中,人类大脑能够在众多声音中专注于一些特定声音并加以理解。这种现象显示了人类听觉系统…

PyTorch|构建自己的卷积神经网络--池化操作

在卷积神经网络中,一般在卷积层后,我们往往进行池化操作。实现池化操作很简单,pytorch中早已有相应的实现。 nn.MaxPool2d(kernel_size ,stride ) 这种池化叫做最大池化。 最大池化原理很简单,就是一个filter以一定的stride在原…

NACHI机器人虚拟示教器报I2101异常

前言 机器人示教器报:I2101 异常停止按钮或外部停止信号被输入 无法再示教模式下进行程序的运行! 解决方法 结果 最后测试可以正常的运行程序

PHP文件代码加密系统,可批量全开源

代码文件加密系统 在程序运行时,实质上是在执行机器码,而虚拟机语言的基本概念是将程序加密到一定程度,也就是说,经过加密的PHP程序在执行时会被解密成opcode继续执行。 PHP在执行时会生成opcode,然后由Zend虚拟机继…

计算机网络(第8版)名词解释

1.ICMP 网际控制报文 允许主机或路由器报告差错情况和提供有关异常情况的报告 2.RIP路由信息协议 是一种分布式的,基于距离向量的路由选择协议 3.BGP 外部网关协议 是不同自治系统的路由器之间交换路由信息的协议 4.IGMP 网际管理协议 使用多播路由器知道多播…

Spring之单元测试

Spring提供了一个运行器&#xff0c;可以读取配置文件&#xff08;或注解&#xff09;来创建容器。 1 整合Junit5 1.1 引入依赖 <dependencies><!--spring context依赖--><!--当你引入Spring Context依赖之后&#xff0c;表示将Spring的基础依赖引入了-->…

JDBC-数据库连接池(druid)

一、背景 在介绍JDBC基本概念中&#xff0c;似乎Java程序每次与数据库交互都要通过驱动创建一个新的连接对象&#xff08;Connection&#xff09;&#xff0c;再由连接对象创建一个可执行SQL的Statement对象&#xff08;或PreparedStatement对象&#xff09;&#xff0c;操作完…

Postman实现压力测试

从事软件开发对于压力测试并不陌生,常见的一些压测软件有Apache JMeter LoadRunner Gatling Tsung 等,这些都是一些比较专业的测试软件,对于我的工作来说一般情况下用不到这么专业的测试,有时候需要对一些接口进行压力测试又不想再安装新软件,那么可以使用Postman来实现对…

Redis之集群选举原理分析

当slave发现自己的master变为FAIL状态时&#xff0c;便尝试进行Failover&#xff0c;以期成为新的master。由于挂掉的master可能会有多个slave&#xff0c;从而存在多个slave竞争成为master节点的过程&#xff0c; 其过程如下&#xff1a; slave发现自己的master变为FAIL。将自…

为什么圈子里面的很讨厌阿里巴巴出来的CTO

在杭州的互联网公司&#xff0c;有一个不争的事实&#xff0c;那就是独角兽公司的CTO几乎都是阿里背景的&#xff0c;且都是高P的&#xff0c;当然很少有高M的&#xff0c;高M的基本上都是自己开公司做CEO或者是做业务总裁了。 为什么会这个样子呢&#xff1f;当然还是由于阿里…

vue使用elementui 的 table且自定义某列表头时,添加的点击事件和自带的筛选功能有类似冒泡行为

element 自带的table 需求&#xff1a;在时间这一列的筛选按钮旁边添加一个批量修改按钮问题&#xff1a;如果不加排序这个属性&#xff0c;那么表格自带的筛选和新加的批量筛选点击事件会冲突&#xff08;冒泡事件&#xff09;解决方法&#xff1a;在该列添加sortable属性&…

吉林大学分布式计算系统题目解析

分布式计算题目解析 填空题 1、名字按结构可分为&#xff08;&#xff09;和&#xff08;&#xff09; &#xff08;绝对名字&#xff09;和&#xff08;相对名字&#xff09; 绝对名字&#xff1a;这是完全确定的路径名字,也就是从根目录开始的完整路径。例如在文件系统中…

学习笔记 | Kafka

一、概述 定义 1、Kafka传统定义&#xff1a;Kafka 是一个分布式的基于 发布/订阅模式 的消息队列&#xff08;Message Queue&#xff09; &#xff0c;主要应用与大数据实时处理领域。 2、发布/订阅&#xff1a;消息的发送者不会将消息直接发送给特定的订阅者&#xff0c;而…

一起学docker(六)| docker网络

Docker网络 不启动docker&#xff0c;网络情况&#xff1a; 启动docker&#xff0c;网络情况&#xff1a; 作用 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接网络通信而不受影响 常用命令 docker network --help 查看docker网络相关命令docker network…

【树莓派】在树莓派使用Python控制L9110电机转动的详细教程

文章目录 引言准备工作L9110电机知识储备特点电机的工作方式 实现结论 引言 树莓派是一款小巧、低成本且功能强大的单板计算机&#xff0c;它的广泛应用使得它成为了物联网和嵌入式系统开发的理想选择。在这篇博客中&#xff0c;我将向大家介绍如何使用树莓派和Python来控制L91…

【嵌入式移植】2、使用Crosstool-NG制作交叉编译工具链

【嵌入式移植】2、使用Crosstool-NG制作交叉编译工具链 1 准备工作1.1 下载Crosstool-NG1.2 尝试配置crosstool-ng&#xff0c;安装依赖项1.2.1 Crosstool-NG所需软件包 1.3 编译及安装 2 制作交叉编译工具链2.1 选择配置文件2.2 使用用户界面菜单进行配置2.2.1 Paths and misc…