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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
python中threading超线程用法实例分析
May 16 Python
谈谈如何手动释放Python的内存
Dec 17 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
Python函数式编程
Jul 20 Python
python实现数据库跨服务器迁移
Apr 12 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
python 3.6.7实现端口扫描器
Sep 04 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
python爬取招聘要求等信息实例
Nov 20 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获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
javascript 有趣而诡异的数组
2009/04/06 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
使用Python进行目录的对比方法
2018/11/01 Python
pycharm显示远程图片的实现
2019/11/04 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
信息管理员岗位职责
2013/12/01 职场文书
道德演讲稿
2014/05/21 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS