首页 > 其他分享 >自己上手写性能工具(三)

自己上手写性能工具(三)

时间:2023-11-03 10:32:36浏览次数:40  
标签:kb 10 性能 py version https 手写 com 工具


自己上手写性能测试工具(一)

自己上手写性能测试工具(二)

自己上手写性能工具(三)_github

我又来更新第三篇了,因为我又改进了一些功能。

显示性能测试进度

前些天逛github发现了tqdm,他可以动态显示程序的执行进度。根据前面开发的功能,在运行性能时,如果并发用户和请求数很大,那么终端就处于执行状态,不会有任何信息输出,直到运行结果,结果才被打印出来。

> python3 kb.py https://wwww.baidu.com -u 10 -q 10

请求URL: https://wwww.baidu.com
用户数:10,循环次数: 10
============== Running ===================

# 漫长的等待....

....................................................................................................
============== Results ===================
最大:       0.955 s
最小:       0.2573 s
平均:       0.4585 s
请求成功 100
请求失败 0
============== end ===================

这个体验非常糟糕。加入tqdm,体验就好很多了。

tqdm的用法超级简单,看一个简单的例子:

from time import sleep
from tqdm import trange

for i in trange(10):
    sleep(0.5)

在终端运行上面的程序,动态显示执行进度。

> python demo.py
100%|██████████████████████████████████████████████████████████████████████████████████| 10/10 [00:05<00:00,  2.00it/s]

生成 kb 命令

上一篇借助 click 来给python文件执行时接收参数

> python3 kb.py https://wwww.baidu.com -u 10 -q 10

这样很不专业,也不够方便。 ab 是这样执行:

> ab -c 10 -n 100 https://wwww.baidu.com

那么,能不能把kb.py 变成一个命令,一次安装,到处执行,并且去掉前面的 python

很简单,只需要使用python的argparse 模块即可。

import argparse

def main():
    """
    API test: parse command line options and run commands.
    """

    parser = argparse.ArgumentParser(description=__description__)

    parser.add_argument(
        '-v', '--version', dest='version', action='store_true',
        help="show version")

    args = parser.parse_args()

    if args.version:
        print("kb {}".format(__version__))
        sys.exit(0)

    return 0


def console_main():
    main()
    return 0

配合 setup.py 安装文件,就可以生成 命令工具了。

# setup.py 

entry_points='''
    [console_scripts]
    kb=kb.run:console_main
'''

执行setup.py 命令安装

python setup.py install

在 python安装目录下生成 kb 命令工具.

自己上手写性能工具(三)_github_02

最新kb使用

  • install
> git clone https://github.com/SeldomQA/kb
> cd kb
> python3 setup.py install
  • 使用

查看帮助:

> kb --help
usage: kb [-h] [-v] [-u USERS] [-q REQUESTS] [url]

kb is a simple performance testing tool, Simulate concurrent requests through
a coroutine.

positional arguments:
  url                   URL to hit

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show version
  -u USERS, --users USERS
                        Number of concurrent users
  -q REQUESTS, --requests REQUESTS
                        Number of requests
  • 运行

通过kb命令实现URL并发请求

> kb https://www.baidu.com -u 5 -q 20
URL: https://www.baidu.com
users: 5, requests: 20
============== Running ===================
100%|████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<?, ?it/s]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.45it/s]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.41it/s]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.31it/s]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.20it/s]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:01<00:00, 10.14it/s]

============== Results ===================
Max:       0.2601 s
Min:       0.054 s
Average:   0.0968 s
pass:  100
fail:  0
total: 100
================== end ===================

标签:kb,10,性能,py,version,https,手写,com,工具
From: https://blog.51cto.com/fnngj/8162070

相关文章

  • 0. 实验工具准备以及后续实验目的
    该系列课程需要使用到RISC-V(极简指令集)版本的四个工具:1.QEMU5.1+2.GDB8.3+3.GCC4.Binutils下面逐个介绍这四个工具。GCCGNUCompilerCollections,GNU系统中的编译器套件。GDBGNUDebugger,GNU系统中的调试器。QEMU开源的硬件虚拟化仿真器(Emulator)。是一个托管的虚......
  • 【工具包使用】csv文件解析
    前言  注意:1.数据格式及特点,如何确认是不是重复的元素及其后续操作;2.数据类型;参考1. python解析csv文件-掘金;完......
  • Linux 防火墙管理工具
    netfilter介绍防火墙是作用与内网和外网之间,根据定义的策略来过滤流量的软件或者硬件。在Linux内核中,自带了防火墙模块netfilter,通过netfilter可以是实现网络流量的过过滤,以及NAT、连接跟踪等功能。通过用户空间的iptables、firewalld等工具,可以实现相关规则的定义,将这些规则传......
  • Leangoo领歌免费Scrum工具私有部署介绍
    ​私有部署介绍私有部署是指将Leangoo领歌软件部署在您企业内部的专有环境中,私有部署可以提供更高级别的数据隐私和安全性。这对于需要处理敏感数据的组织非常重要。Leangoo领歌提供了私有部署服务,旨在满足各类型、各规模企业的特殊需求。私有部署增值功能如下:灵活的部署方......
  • 7. 从零开始编写一个类nginx工具, HTTP及TCP内网穿透原理及运行篇
    wmproxywmproxy是由Rust编写,已实现http/https代理,socks5代理,反向代理,静态文件服务器,内网穿透,配置热更新等,后续将实现websocket代理等,同时会将实现过程分享出来,感兴趣的可以一起造个轮子法项目++wmproxy++gite:https://gitee.com/tickbh/wmproxygithub:https://github.com/tic......
  • Prometheus+Grafana实现服务性能监控:windows主机监控、Spring Boot监控、Spring Cloud
    1、Prometheus介绍Prometheus使用Go语言开发,中文名称叫:普罗米修斯。Prometheus是一个开源系统最初在SoundCloud构建的监控和警报工具包。自2012年成立以来,许多公司和组织已经采用了Prometheus,它现在是一个独立的开源项目并独立于任何公司进行维护。Prometheus于2016年加入云......
  • 使用工具CoPAn(冲突模式分析)深入分析冲突产生及所学从句
    深入学习请参见原始网址:https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithmik/research/algorithm-engineering/copan/  EventhoughtheCDCLalgorithmandcurrentSATsolversper......
  • Intrepid—总线采集测试仿真工具
    产品概述    VehicleSpy是英特佩斯推出的简单易用的高性价比总线工具,包含分析软件和采集调试硬件,具备对各类总线数据的网络监控、诊断、总线分析、数据采集、节点仿真、自动化测试等功能,目前支持的总线类型包含CAN、CANFD、LIN、FlexRay、车载以太网等各类总线格式。 ......
  • 【宝藏工具】开源组件信息一键查询,快速获取组件来源、版本、源码地址、漏洞补丁、推荐
    铁子们,分享一个开源组件安全检索免费工具,需要的自取~输入组件名,一键查询可以组件版本、来源、安全状态、漏洞详情和推荐版本、修复建议这些。点这个链接注册后直接就能用:组件安全检索工具 一键查询第三方组件版本、漏洞、所属国家、所属语言、源码链接等:查看漏洞详情:......
  • sql语句性能进阶必须了解的知识点——索引失效分析
    在前面的文章中讲解了sql语句的优化策略https://blog.51cto.com/liwen629/8146651sql语句的优化重点还有一处,那就是——索引!好多sql语句慢的本质原因就是设置的索引失效或者根本没有建立索引!今天我们就来总结一下那些无效的索引设置方式进而避免大家踩坑!看到这里有的同学会问:what?......