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用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
Mac 上切换Python多版本
Jun 17 Python
python3使用QQ邮箱发送邮件
May 20 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
python em算法的实现
Oct 03 Python
关于Python错误重试方法总结
Jan 03 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
php之CodeIgniter学习笔记
2013/06/17 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
Python程序运行原理图文解析
2018/02/10 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
应聘教师推荐信
2013/10/31 职场文书
公司综合部的成员自我评价分享
2013/11/05 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
干部年终考核评语
2015/01/04 职场文书
MySQL Server 层四个日志
2022/03/31 MySQL