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列表操作使用示例分享
Feb 21 Python
python 默认参数问题的陷阱
Feb 29 Python
Python格式化日期时间操作示例
Jun 28 Python
Python玩转Excel的读写改实例
Feb 22 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
在cmd中查看python的安装路径方法
Jul 03 Python
pandas的排序和排名的具体使用
Jul 31 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
Python中re模块的元字符使用小结
Apr 07 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数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
vue组件name的作用小结
2018/05/23 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
python查找目录下指定扩展名的文件实例
2015/04/01 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
python支持多继承吗
2020/06/19 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
remote接口和home接口主要作用
2013/05/15 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
村长贪污检举信
2014/04/04 职场文书
高中教师评语大全
2014/04/25 职场文书
幼儿园标语大全
2014/06/19 职场文书
租房协议书样本
2014/08/20 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
辞职信格式范文
2015/05/13 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
公司年会开场白
2015/06/01 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
golang连接MySQl使用sqlx库
2022/04/14 Golang