python多线程http压力测试脚本


Posted in Python onJune 25, 2019

本文实例为大家分享了python多线程http压力测试的具体代码,供大家参考,具体内容如下

#coding=utf-8

import sys
import time
import thread
import httplib, urllib
import random
import uuid
import logging
logging.basicConfig(level=logging.DEBUG,
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    datefmt='%a, %d %b %Y %H:%M:%S',
    filename='测试脚本日志.log',
    filemode='w')

def log_uncaught_exceptions(exception_type, exception, tb):
 logging.critical(''.join(traceback.format_tb(tb)))
 logging.critical('{0}: {1}'.format(exception_type, exception))
sys.excepthook = log_uncaught_exceptions

#网关地址
addr="172.18.2.4"
port=8080
thread_count = 15 #单次并发数量
requst_interval = 10 #请求间隔(秒)
test_count = sys.maxsize #sys.maxsize # 指定测试次数


#字段说明,必须一一对应
#login为空表示使用随机用户名

param_list=[
{"login":"user1","password":"qweqwe12"},
]

now_count = 0
lock_obj = thread.allocate()
def send_http():
 global now_count
 httpClient = None
 try:
  for user in user_list:
   tmp_user = user["login"]
   if tmp_user.strip() =='':
    tmp_user = str(uuid.uuid1()) + str(random.random())
   print tmp_user
   params = urllib.urlencode({"operationData":
      [{"login": tmp_user,"password":user["password"]}]})
   headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}

   httpClient = httplib.HTTPConnection(addr, port, timeout=5)
   httpClient.request("POST", "/simple/spider.task.distribute", params, headers)

   response = httpClient.getresponse()
   print '发送数据: ' + params
   print '返回码: ' + str(response.status)
   print '返回数据: ' + response.read()

   logging.info('发送数据: ' + params)
   logging.info('返回码: ' + str(response.status))
   logging.info('返回数据: ' + response.read())
   #print response.getheaders() #获取头信息
   sys.stdout.flush()
   now_count+=1
 except Exception, e:
  print e
  logging.info(e)
 finally:
  if httpClient:
   httpClient.close()

def test_func(run_count):
 global now_count
 global requst_interval
 global lock_obj
 cnt = 0
 while cnt < run_count:
  lock_obj.acquire()
  print ''
  print '***************************请求次数:' + str(now_count) + '*******************************'
  print 'Thread:(%d) Time:%s\n'%(thread.get_ident(), time.ctime())

  logging.info(' ')
  logging.info('***************************请求次数:' + str(now_count) + '*******************************')
  logging.info('Thread:(%d) Time:%s\n'%(thread.get_ident(), time.ctime()))
  cnt+=1
  send_http()
  sys.stdout.flush()
  lock_obj.release()
  time.sleep(requst_interval)

def test(ct):
 global thread_count
 for i in range(thread_count):
  thread.start_new_thread(test_func,(ct,))

if __name__=='__main__':
 global test_count
 test(test_count)
 while True:
  time.sleep(100)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字符串定义
Sep 25 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
Python检测网络延迟的代码
May 15 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
浅述python中深浅拷贝原理
Sep 18 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
一行python实现树形结构的方法
Aug 09 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Django stark组件使用及原理详解
Aug 22 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 #Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 #Python
如何使用Python标准库进行性能测试
Jun 25 #Python
python绘制评估优化算法性能的测试函数
Jun 25 #Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 #Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 #Python
pyqt5 删除layout中的所有widget方法
Jun 25 #Python
You might like
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
python友情链接检查方法
2015/07/08 Python
Python正则表达式使用经典实例
2016/06/21 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python之拟合的实现
2019/07/19 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
Python输出指定字符串的方法
2020/02/06 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
指导教师评语
2014/04/26 职场文书
职位说明书范文
2014/05/07 职场文书
建材投资建议书
2014/05/16 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
1000字打架检讨书
2014/11/03 职场文书
民事起诉状范文
2015/05/19 职场文书