`
darklipeng
  • 浏览: 126162 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

python并发测试脚本

阅读更多

这两天要做性能测试,自己没事用python写了个脚本,用于压力测试

 

# -*- coding: utf8 -*-
# code by Shurrik
import threading, time, httplib
HOST = "www.baidu.com"; #主机地址 例如192.168.1.101
PORT = 80 #端口
URI = "/?123" #相对地址,加参数防止缓存,否则可能会返回304
TOTAL = 0 #总数
SUCC = 0 #响应成功数
FAIL = 0 #响应失败数
EXCEPT = 0 #响应异常数
MAXTIME=0 #最大响应时间
MINTIME=100 #最小响应时间,初始值为100秒
GT3=0 #统计3秒内响应的
LT3=0 #统计大于3秒响应的
# 创建一个 threading.Thread 的派生类
class RequestThread(threading.Thread):
    # 构造函数
    def __init__(self, thread_name):
        threading.Thread.__init__(self)
        self.test_count = 0

    # 线程运行的入口函数
    def run(self):

        self.test_performace()


    def test_performace(self):
            global TOTAL
            global SUCC
            global FAIL
            global EXCEPT
            global GT3
            global LT3
            try:
                st = time.time()
                conn = httplib.HTTPConnection(HOST, PORT, False)  
                conn.request('GET', URI)
                res = conn.getresponse()  
                #print 'version:', res.version  
                #print 'reason:', res.reason  
                #print 'status:', res.status  
                #print 'msg:', res.msg  
                #print 'headers:', res.getheaders()
                start_time
                if res.status == 200:
                    TOTAL+=1
                    SUCC+=1
                else:
                    TOTAL+=1
                    FAIL+=1
                time_span = time.time()-st
                print '%s:%f\n'%(self.name,time_span)
                self.maxtime(time_span)
                self.mintime(time_span)
                if time_span>3:
                    GT3+=1
                else:
                    LT3+=1                    
            except Exception,e:
                print e
                TOTAL+=1
                EXCEPT+=1
            conn.close()
    def maxtime(self,ts):
            global MAXTIME
            print ts
            if ts>MAXTIME:
                MAXTIME=ts
    def mintime(self,ts):
            global MINTIME
            if ts<MINTIME:
                MINTIME=ts
        
# main 代码开始
print '===========task start==========='
# 开始的时间
start_time = time.time()
# 并发的线程数
thread_count = 300

i = 0
while i <= thread_count:
    t = RequestThread("thread" + str(i))
    t.start()
    i += 1
t=0
#并发数所有都完成或大于50秒就结束
while TOTAL<thread_count|t>50:
        print "total:%d,succ:%d,fail:%d,except:%d\n"%(TOTAL,SUCC,FAIL,EXCEPT)
        print HOST,URI
        t+=1
        time.sleep(1)
print '===========task end==========='
print "total:%d,succ:%d,fail:%d,except:%d"%(TOTAL,SUCC,FAIL,EXCEPT)
print 'response maxtime:',MAXTIME
print 'response mintime',MINTIME
print 'great than 3 seconds:%d,percent:%0.2f'%(GT3,float(GT3)/TOTAL)
print 'less than 3 seconds:%d,percent:%0.2f'%(LT3,float(LT3)/TOTAL)

 300并发试着测了iteye几次,还是被封了一次IP……

5
1
分享到:
评论
3 楼 晴天i 2016-07-17  
写得真好,真好,配得注释也很好!! 
2 楼 晴天i 2016-07-17  
能评论了吗
1 楼 u010530067 2015-11-06  
怎么运动你写的这个脚本?

相关推荐

    mqtt-python+jmeter脚本做并发测试.txt

    适合做智慧路灯,该脚本首先会把平台里面所有的设备都保存下来,且每个网关下的设备都会分开保存,然后通过jmeter来做csv参数化,做并发

    python实现接口并发测试脚本

    常用的网站性能测试指标有:并发数、响应时间、吞吐量、性能计数器等。 1、并发数 并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。 2、响应时间 响应时间是一个系统最重要的指标之一,它的...

    python+ffmpeg视频并发直播压力测试

    通过python与ffmpeg结合使用,可生成进行视频点播、直播的压力测试脚本。可支持不同类型的视频流,比如rtmp或者hls形式。 通过如下方式执行脚本:python multiRealPlay.py [rtmp|http] [thread counts] [interval ...

    python京东茅台脚本开源源码实测可用

    最后,考虑到`jd_maotai_seckill-master`这个压缩包文件名,我们可以推测这是一个项目仓库的主目录,其中可能包含了脚本源码、配置文件、测试用例等相关文件。用户可能需要阅读README文件了解如何安装和运行脚本,...

    基于python王者荣耀脚本

    《基于Python的王者荣耀脚本详解》 在编程领域,Python以其简洁易懂的语法和强大的功能,成为许多初学者及专业开发者的首选语言。而王者荣耀作为一款热门的多人在线竞技游戏,吸引了大量的玩家,其中不乏对游戏自动...

    Python-一些有用的Python脚本

    "Python-一些有用的Python脚本"这个标题暗示了这个压缩包可能包含了一系列实用的Python代码片段或完整脚本,旨在帮助用户解决特定问题或提高开发效率。这些脚本可能涵盖了从数据处理到网络爬虫,再到自动化任务的...

    mongodb4.2全量定时增量备份python脚本

    Python的`platform`库可以用来检测运行环境并选择适当的执行方式。 标签中的"python"表明了我们使用Python编程语言来实现这个功能。Python因其易读性强和丰富的库支持而常被用于这类任务。"linux"和"mongodb"则强调...

    CC慢攻击python脚本

    【CC慢攻击Python脚本】是一种在网络编程领域中用于模拟慢速攻击的工具。慢攻击,也称为HTTP慢速攻击或慢loris攻击,是一种网络安全威胁,它通过占用服务器资源来瘫痪目标系统,而不是像传统DDoS攻击那样立即发送...

    华西抢号Python脚本

    4. **自动化测试框架Selenium**:如果华西抢号脚本涉及浏览器操作,比如点击按钮、处理动态加载的内容,可能使用了Selenium。Selenium能模拟真实用户的行为,支持多种浏览器,可以处理复杂的交互。 5. **定时任务**...

    python常用自动化脚本-python3.6.1-笔记详细总结

    - **asyncio**:Python 3.6提供了更完善的异步I/O库asyncio,支持协程(coroutine)和事件循环,适合编写高性能网络服务和并发任务。 6. **错误处理**: - **捕获多个异常**:使用`except Exception as e:`可以...

    python同步时间脚本

    7. **线程与并发**:如果脚本涉及到多任务并行,可能使用了`threading`或`concurrent.futures`模块,以便在同步时间的同时不影响其他系统进程。 8. **系统服务化**:为了让脚本在系统启动时自动运行,可能使用了`...

    python3.6.5-python脚本实现软硬件监控服务.zip

    在本文中,我们将深入探讨如何使用Python 3.6.5版本编写脚本来实现软硬件监控服务,以及如何在离线环境下搭建Python环境。 首先,让我们关注标题中的"python3.6.5-python脚本实现软硬件监控服务"。这意味着我们将...

    Python炉石传说,多进程优化

    在这个脚本中,多进程可能被用来并发地进行多个游戏对局,以加速游戏进程。 5. **Python Shell**:Python Shell是Python的交互式解释器,用户可以直接在Shell中运行Python代码,查看结果。在这里,用户需要在Python...

    运行Python脚本的自动化测试平台设计及实现.pdf

    根据提供的文档内容,我们将详细阐述运行Python脚本的自动化测试平台设计及实现中涉及的关键知识点。 1. 自动化测试的重要性与Python脚本的应用 文档开篇提到,随着智能卡测试需求的增长,手动测试已经不能满足功能...

    c#远程调用linux服务器的Python脚本(csdn)————程序.pdf

    描述中提到的问题和解决方案集中在如何使Python脚本在Linux服务器上持续后台运行,并能并发处理多个用户的请求。 首先,原始的做法可能存在以下问题: 1. 脚本需要始终保持在后台运行,以便在用户请求时能够被调用...

    python多线程批量访问url脚本

    本项目中的"python多线程批量访问url脚本"正是基于这个理念设计的。 该脚本采用了第三方库`grequests`,它是`requests`库的一个并行版本,能够支持异步的HTTP请求。`requests`库是Python中广泛使用的HTTP客户端,而...

    Python自动化导出zabbix数据并发邮件脚本

    标题中的"Python自动化导出zabbix数据并发邮件脚本"是指使用Python编程语言编写的一段程序,该程序能够自动从Zabbix监控系统中提取数据,并将这些数据整理成报告,随后通过电子邮件发送给相关人员。Zabbix是一个开源...

    学习python的学习脚本.zip

    17. **并发与多线程**:Python的threading模块支持多线程编程,asyncio模块则提供了异步I/O支持。 18. **GUI编程**:如Tkinter和PyQt库可以帮助创建图形用户界面。 19. **部署与打包**:使用PyInstaller或cx_...

    node调用python脚本

    在IT行业中,跨语言交互是常见的需求,例如在前端JavaScript(如Node.js)环境中调用后端Python脚本。这个“node调用python脚本”的主题涉及到如何在Node.js环境中执行Python代码,以便利用Python的强大功能,比如...

Global site tag (gtag.js) - Google Analytics