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 socket C/S结构的聊天室应用实现
Nov 30 Python
在Python中使用__slots__方法的详细教程
Apr 28 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
Python验证文件是否可读写代码分享
Dec 11 Python
PyQt5 多窗口连接实例
Jun 19 Python
详解python中eval函数的作用
Oct 22 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
Apr 09 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
Python实现Word文档转换Markdown的示例
Dec 22 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遍历数组的4种方法总结
2014/07/05 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
基于jquery的滑动样例代码
2010/11/20 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
python计算N天之后日期的方法
2015/03/31 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
Python秒算24点实现及原理详解
2019/07/29 Python
python 实现音频叠加的示例
2020/10/29 Python
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
自我鉴定范文200字
2013/10/02 职场文书
升旗仪式主持词
2014/03/19 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
主要负责人任命书
2014/06/06 职场文书
毕业生面试求职信
2014/06/23 职场文书
小学生春游活动方案
2014/08/20 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书