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 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
Python简单实现enum功能的方法
Apr 25 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
python得到单词模式的示例
Oct 15 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
python 申请内存空间,用于创建多维数组的实例
Dec 02 Python
Python日志syslog使用原理详解
Feb 18 Python
python中Pexpect的工作流程实例讲解
Mar 02 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
摩卡咖啡
2021/03/03 咖啡文化
PHP5 安装方法
2006/10/09 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
python实现的简单文本类游戏实例
2015/04/28 Python
深入理解python中的select模块
2017/04/23 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
Windows下python3.7安装教程
2018/07/31 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
Python列表元素常见操作简单示例
2019/10/25 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
上海微创软件面试题
2012/06/14 面试题
自荐信的两点禁忌
2013/10/30 职场文书
爱情保证书大全
2014/04/29 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
入团介绍人意见范文
2015/06/04 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL