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实现在windows下操作word的方法
Apr 28 Python
python执行系统命令后获取返回值的几种方式集合
May 12 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
Mar 31 Python
序列化Python对象的方法
Aug 01 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
Python中zipfile压缩包模块的使用
May 14 Python
详解分布式系统中如何用python实现Paxos
May 18 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中实现简单的ACL 完结篇
2011/09/07 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
Python中统计函数运行耗时的方法
2015/05/05 Python
Python实现截屏的函数
2015/07/25 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
python regex库实例用法总结
2021/01/03 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
小学国庆节活动方案策划书
2014/09/16 职场文书
一般纳税人申请报告
2015/05/18 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
JavaScript前端面试组合函数
2022/06/21 Javascript