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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
Nov 01 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
python3 pygame实现接小球游戏
May 14 Python
python 设置输出图像的像素大小方法
Jul 04 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
python numpy--数组的组合和分割实例
Feb 24 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
Python 自由定制表格的实现示例
Mar 20 Python
python request 模块详细介绍
Nov 10 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
Pygame Rect区域位置的使用(图文)
Nov 17 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
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
js不是基础的基础
2006/12/24 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
Python 字符串换行的多种方式
2018/09/06 Python
python读写csv文件的方法
2019/08/13 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
NumPy统计函数的实现方法
2020/01/21 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
Python读取表格类型文件代码实例
2020/02/17 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
CSS3动画animation实现云彩向左滚动
2014/05/09 HTML / CSS
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
付款委托书范本
2014/10/05 职场文书
通知范文怎么写
2015/04/16 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python