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 文件读写操作实例详解
Mar 12 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
利用Python进行异常值分析实例代码
Dec 07 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
python中while和for的区别总结
Jun 28 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 Python
Python中如何处理常见报错
Jan 18 Python
Python中的 Set 与 dict
Mar 13 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函数
2010/02/16 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
js实现一个简易计算器
2020/03/30 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python的Django框架中的表单处理示例
2015/07/17 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
AURALog面试题软件测试方面
2013/10/22 面试题
Unix控制后台进程都有哪些进程
2016/09/22 面试题
就业协议书怎么填
2014/04/11 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
财务人员担保书
2014/05/13 职场文书
信息工作经验交流材料
2014/05/28 职场文书
学校欢迎标语
2014/06/18 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
新年寄语2016
2015/08/17 职场文书
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript