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聚类算法之基本K均值实例详解
Nov 20 Python
Python装饰器基础详解
Mar 09 Python
python中正则的使用指南
Dec 04 Python
Python闭包的两个注意事项(推荐)
Mar 20 Python
Python网络编程详解
Oct 31 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
python自动点赞功能的实现思路
Feb 26 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常用的缓存技术汇总
2014/05/05 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
JavaScript数组去重的几种方法
2019/04/07 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
Python WSGI的深入理解
2018/08/01 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
python requests库的使用
2021/01/06 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
大学新生军训感言
2014/02/25 职场文书
家长会欢迎标语
2014/06/24 职场文书
2019思想汇报范文
2019/05/21 职场文书
windows安装python超详细图文教程
2021/05/21 Python