Python实现的HTTP并发测试完整示例


Posted in Python onApril 23, 2020

可修改变量thread_count指定最大的并发数量,即线程的数量。

完成之后,打印输出失败的次数,以及开始时间和结束时间,单位是毫秒。

主要是学习一下Python,仅供参考。

#!/usr/bin/python3

import sys, time, json, _thread
import http.client, urllib.parse

thread_count = 100  #并发数量
now_count = 0
error_count = 0
begin_time = ''

lock_obj = _thread.allocate()

def test_http_engine():
  global now_count
  global error_count
  global thread_count
  global begin_time
  conn = None
  if now_count == 0:
    begin_time = int(round(time.time() * 1000))
  try:
    conn = http.client.HTTPConnection("192.168.1.1", 80)
    conn.request('GET', '/')

    response = conn.getresponse()
    data = response.read()
    print (data)

    if json.dumps(response.status) != '200':
      error_count += 1;
      print ('error count: ' + str(error_count))

    sys.stdout.flush()
    now_count += 1
    if now_count == thread_count:
      print ('### error count: ' + str(error_count) + ' ###')
      print ('### begin time : ' + str(begin_time))
      print ('### end time  : ' + str(int(round(time.time() * 1000))))

  except Exception as e:
    print (e)
  finally:
    if conn:
      conn.close()

def test_thread_func():
  global now_count
  global lock_obj
  cnt = 0

  lock_obj.acquire()
  print ('')
  print ('=== Request: ' + str(now_count) + ' ===')

  cnt += 1
  test_http_engine()
  sys.stdout.flush()
  lock_obj.release()


def test_main():
  global thread_count
  for i in range(thread_count):
    _thread.start_new_thread(test_thread_func, ())

if __name__=='__main__':
  test_main()
  while True:
    time.sleep(5)
Python 相关文章推荐
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
python中实现字符串翻转的方法
Jul 11 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
Django 重写用户模型的实现
Jul 29 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
Python restful框架接口开发实现
Apr 13 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
python 实现体质指数BMI计算
May 26 Python
Python集合的基础操作
Nov 01 Python
安装dbus-python的简要教程
May 05 #Python
使用SAE部署Python运行环境的教程
May 05 #Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 #Python
在Python中使用mechanize模块模拟浏览器功能
May 05 #Python
python实现自动更换ip的方法
May 05 #Python
浅谈MySQL中的触发器
May 05 #Python
python去除所有html标签的方法
May 05 #Python
You might like
php分页示例分享
2014/04/30 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
JS内部事件机制之单线程原理
2018/07/02 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
python  创建一个保留重复值的列表的补码
2018/10/15 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
客户代表实习人员自我鉴定
2013/09/27 职场文书
工程总经理工作职责
2013/12/09 职场文书
幼儿教育感言
2014/02/05 职场文书
开学典礼决心书
2014/03/11 职场文书
法定代表人资格证明书
2014/09/11 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server