locust基础使用

2023-10-27

**

locust基础使用

**
前言:

最近接到一个需求,压测一个接口稳定性,瞬间脑海浮现了jmeter,然后接着看了是那个接口,瞬间分析了下接口里身份验证的加密算法,加上由于时间有限加上jmeter的BeanShell PreProcessor不是很熟悉,就想python貌似也有locust可以满足基本的性能测试,于是改写之前自动化代码调整使用locust,顺便记录下locust相关基础使用;

正文:

使用locust做压力测试,首先我们还是先谈环境,办公环境ubuntu16,系统上python环境有python2.7、python3.5、python3.6,(看其他博客有博主称locust只支持python2,事实上并不是如此,我先后在python3.6&python3.7运行过)

1、环境准备:

locust有六个依赖的python模块:gevent、flask、requests、msgpack、six、pyzmq

本地安装有python环境的,可以配置对应环境变量,使用pip在线安装是不错的方法;(我记得也可以使用whl包安装,自行选择即可)

# gevent
pip3 install gevent

#在Python中实现协程的第三方库。协程又叫微线程Corouine。使用gevent可以获取极高的并发能力;

#flask
pip3 install -U Flask

#Python的一个web开发框架

#requests
pip3 install requests

#大家很熟悉的requests库,发送http&https请求

#msgpack
pip3 install msgpack

#一种快速、紧凑的二进制序列化格式,使用与类似json的数据;
#msgpack-python已经废弃。参考官网。https://pypi.org/project/msgpack/


#six
pip3 install six

#提供了一些简单的工具封装Python2和Python3 之间的差异;
#https://pypi.org/project/six/

#pyzmq
pip3 install pyzmq

#安装这个第三方库,可以把Locust运行在多个进程或多个机器(分布式)
#安装结束了之后我们就开启Locust之旅了。

2、具体安装:

官网提示,locustio替代locust

pip3 install locustio

大部分人到这里一般都不会看了,非常nice,我也是这样做的,然后进行了环境检查;(声明下:我是直接在物理机环境安装的,我觉得这是一个失误的开始,反正我记得在虚拟环境pip 安装后没有任何幺蛾子)

环境检查:

pip3 show locustio
#检查locustio是否安装

locust --help
#检查locust是否可用

#物理机安装这里除了幺蛾子
提示locust 不是内部命令,简单判断下要不是没有环境变量,要不就是没装,
二话不说加了环境变量
(我加的包安装目录哈,再次检查提示一样的错误,难道没装locust,想起之前是locustio有区别?)
然后再次安装pip3 install locust,再次看没有啥用;
其实locust命令没活过来是加的环境变量不对,在python安装目录下有一个bin目录,安装locustio后在
bin目录就会有locust可执行文件,去引用site-packages依赖包中对应模块;
正确做法如下(可以先pip3 uninstall locust 和 locustio ):

创建一个python工程。
在该工程的虚环境中加入所有的依赖包(以上的包)
pip3 install gevent
pip3 install -U Flask
pip3 install requests
pip3 install msgpack
pip3 install six
pip3 install pyzmq
pip3 install locustio

#环境检查
pip3 show locustio

Name: locustio
Version: 0.13.5
Summary: Website load testing framework
Home-page: https://locust.io/
Author: Jonatan Heyman, Carl Bystrom, Joakim Hamrén, Hugo Heyman
Author-email: UNKNOWN
License: MIT
Location: /usr/local/lib/python3.6/site-packages
Requires: six, msgpack-python, pyzmq, flask, gevent, geventhttpclient-wheels, ConfigArgParse, requests
Required-by: locust


#拎出来:Requires: six, msgpack-python, pyzmq, flask, gevent, 
geventhttpclient-wheels, ConfigArgParse, requests
是不是感觉不对了;上边说的依赖6个,现在有8个,
所以再安装下依赖环境吧,虽然msgpack-python貌似被弃用,但是你安装的包依赖它顺手吧;
所以继续:
pip3 install msgpack-python            #提示已经安装,看来在安装msgpack的时候就安装这个了?
pip3 install geventhttpclient-wheels   #也已经安装,所以在安装gevent的时候就把这个也安装了。
pip3 install ConfigArgParse            #这个也已经安装过。

3、编写代码:

不方便贴公司代码,江湖规矩贴通用代码吧;

# coding=utf-8
import requests
from locust import HttpLocust,TaskSet,task
import urllib3
from urllib3.exceptions import InsecureRequestWarning
# # 禁用安全请求警告
urllib3.disable_warnings(InsecureRequestWarning)

class MyBlogs(TaskSet):
    # 访问我的博客首页
    @task(1)
    def get_blog(self):
        # 定义请求头
        header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}

        req = self.client.get("/dong-c",  headers=header, verify=False)
        if req.status_code == 200:
            print("success")
        else:
            print("fails")

class websitUser(HttpLocust):
    task_set = MyBlogs
    wait_time = between(3, 6)

if __name__ == "__main__":
    import os
    os.system("locust -f PerformTools.py --host=https://www.cnblogs.com")

可以看到 locust已经启动成功,且开启的端口为8089.

[2020-05-10 15:57:54,008] dongcxxxxxxxxxxxx-xxx.local/INFO/locust.main: Starting web monitor at *:8089
[2020-05-10 15:57:54,008] dongcxxxxxxxxxxxx-xxx.local/INFO/locust.main: Starting Locust 0.13.5

运行停止后有结果:

Name                                                          # reqs      # fails     Avg     Min     Max  |  Median   req/s failures/s
--------------------------------------------------------------------------------------------------------------------------------------------
 GET /dong-c                                                      522     0(0.00%)    4281     273   15399  |    4100    6.42    0.00
--------------------------------------------------------------------------------------------------------------------------------------------
 Aggregated                                                       522     0(0.00%)    4281     273   15399  |    4100    6.42    0.00

Percentage of the requests completed within given times
 Name                                                           # reqs    50%    66%    75%    80%    90%    95%    98%    99%  99.9% 99.99%   100%
------------------------------------------------------------------------------------------------------------------------------------------------------
 GET /dong-c                                                       522   4100   5000   5700   6100   7300   8500  10000  11000  15000  15000  15000
------------------------------------------------------------------------------------------------------------------------------------------------------
 Aggregated                                                        522   4100   5000   5700   6100   7300   8500  10000  11000  15000  15000  15000

填入信息:

Number of users to simulate:设置模拟的用户总数
Hatch rate (users spawned/second):每秒启动的虚拟用户数
Start swarming:执行locust脚本

顺便贴一下安全警告的错误解决:

import urllib3
from urllib3.exceptions import InsecureRequestWarning
# 禁用安全请求警告
urllib3.disable_warnings(InsecureRequestWarning)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

locust基础使用 的相关文章

  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • Java中的类、对象以及方法简单定义与参数传递

    目录 一 类和对象的概念 二 方法 一 类和对象的概念 对象 现实世界中客观存在的物体都是对象 具有属性和方法 其中属性描述对象的特征 方法描述对象的行为 类 具有相同属性和方法的多个对象的集合 类是对对象的抽象 对象是类的具体 类是创建对
  • 关于安装pytorch、cuda对应GPU显卡算力问题(记录贴)

    贴几个链接 ngc pytorch容器版本对应关系 CUDA Toolkit版本及可用PyTorch对应关系 NVIDIA英伟达GPU显卡算力表 总结 安装torch时会安装对应的cuda版本 目前来看cuda10对应的是7 5的算力 适用
  • LLVM基本概念入门

    入职新公司以后 开始着手基于LLVM开发编译器 之前在前东家那里主要做gcc的开发 所以也算是有点基础 但拿到LLVM后 除了知道clang a c o a之外 好像其他的都有点差异 现在经过了小一个月的学习 也算有点收获 因为网上关于LL
  • 抖音矩阵系统-60+自媒体平台一键发布-短视频获客系统

    当老板做企业的 想在抖音上做生意的 一定一定要开通蓝V企业号线索版来做矩阵 看看我每天的线索都是999 客服都接待不过来 现在还有300个客资未分配 抖音都在推了企业员工号的玩法 你还在质疑什么 在抖音上做矩阵 真的能将你的生意放大100倍
  • rabbitmq使用mqtt协议

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 rabbitmq是什么 二 mqtt协议是什么 三 配置步骤 1 启用 rabbitmq的mqtt协议 2 mqtt 客户端依赖包 总结 前言 在网上学习
  • JavaScript undefined 属性

    定义和用法 undefined 属性用于存放 JavaScript 的 undefined 值 语法 undefined 说明 无法使用 for in 循环来枚举 undefined 属性 也不能用 delete 运算符来删除它 undef
  • linux各文件夹的作用是什么,linux各目录的作用

    关键字 linux 目录 linux各目录的作用 linux下的文件结构 看看每个目录都是干吗用的 bin 二进制可执行命令 dev 设备特别文件 etc 系统管理和设置文件 etc rc d 启动的设置文件和脚本 home 用户主目录的基
  • 剑指Offer第八和第九题:跳台阶和变态跳台阶以及拓展

    由于题目类似 这里总和一下 并进行拓展 目录 1 跳台阶 2 变态跳台阶 3 拓展篇 疯魔版跳台阶 题目一 题目二 1 跳台阶 题目描述 一只青蛙一次可以跳上1级台阶 也可以跳上2级 求该青蛙跳上一个n级的台阶总共有多少种跳法 先后次序不同
  • 苹果手机锁屏后无线重新连接服务器,iphone11锁屏自动断开wifi怎么办 苹果11手机热点自动断开解决方法...

    目前有着很多用户都在使用最新的iphone11这款手机 但是对于手机上的wifi热点网络却出现了不少的问题 比如iphone11锁屏自动断开wifi wifi热点自动断开 当遇到这些问题应该怎么办 如何才能解决呢 下面就和小编一起来看看吧
  • 基于SpringBoot 的报销系统

    视频展示 基于springboot的报销系统 项目定制 报销系统 哔哩哔哩 bilibili 技术 SpringBoot Html css 个人制作模块介绍 权限模块 前端权限模块 后端权限模块 登录监听 监听器 拦截器 业务流程 接口设计
  • nnU-Net团队新作MedNeXt:新一代医学图像分割之王,刷新多项榜单记录!

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt 医疗影像和Transformer 微信技术交流群 转载自 CVHub Title MedNeXt Transformer driven Scaling
  • clamav的病毒库文件的文件头的信息说明(clamav版本号等)

    Author Samson Date 01 04 2022 在开源病毒检测工具clamav中 是通过对病毒库中的病毒特征值来进行对比的 病毒库文件存放于 var lib clamav目录下 主要是三个cvd文件 如下 bytecode cv
  • httpservletrequest_HttpServletRequest详解 外加请求转发和重定向口述讲解(五)

    点击上方 IT咸鱼 星标公众号 每天分享技术栈 开发工具等 续前篇 咳 今天家里停电电继续更新 每天坚持 前面我们说到response对象的用法和案列 接下来再说说Servlet Request对象用法和案例 1 ServletReques
  • Some Laws in IT

    Moore s Law 摩尔定律是由英特尔 Intel 创始人之一戈登 摩尔 Gordon Moore 提出来的 其内容为 当价格不变时 集成电路上可容纳的元器件的数目 约每隔18 24个月便会增加一倍 性能也将提升一倍 换言之 每一美元所
  • JUC-7. 线程池

    想了解更多JUC的知识 JUC并发编程合集 1 概述 线程池做的工作主要是 控制运行的线程数量 处理过程中将任务放入队列 然后在线程创建后启动这些任务 如果线程数量超过了最大数量 超出数量的线程排队等候 等其他线程执行完毕 再从队列中取出任
  • 全套增删改查(链接数据据库)

    使用Drud连接池连接数据库 完成对数据的增删改查 了解所需要实现的功能 1 综合练习 1 简单功能 1 列表查询 2 登录 3 添加 4 删除 5 修改 2 复杂功能 1 删除选中 2 分页查询
  • ajax怎么给日历日期上做标记,可以做标记的日历?

    原标题 可以做标记的日历 我们很多人一天要做的事情是比较多的 除了工作中的一些任务外 还要照顾好整个家庭 事情多了就难免会有疏忽 所以有不少网友都想要使用一款直观的添加日程的软件 如果可以直接在日历软件中添加日程做标记就更好了 那么有可以做
  • 剑指offer——对称的二叉树

    题目描述 请实现一个函数 用来判断一颗二叉树是不是对称的 注意 如果一个二叉树同此二叉树的镜像是同样的 定义其为对称的 本题知识点 树 解题思路 采用递归的方式 先判断左子树和右子树是否相等 再递归判断左子树的右子树和右子树的左子树以及左子
  • 【101】NLP 自然语言处理14种分类算法】

    内容目录 一 数据集介绍二 解压文件明确需求三 批量读取和合并文本数据集四 中文文本分词五 停止词使用六 编码器处理文本标签七 常规算法模型1 k近邻算法2 决策树3 多层感知器4 伯努力贝叶斯5 高斯贝叶斯6 多项式贝叶斯7 逻辑回归8
  • locust基础使用

    locust基础使用 前言 最近接到一个需求 压测一个接口稳定性 瞬间脑海浮现了jmeter 然后接着看了是那个接口 瞬间分析了下接口里身份验证的加密算法 加上由于时间有限加上jmeter的BeanShell PreProcessor不是很