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设置socket代理的方法
Jan 14 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
Cython编译python为so 代码加密示例
Dec 23 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
Pytorch to(device)用法
Jan 08 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
降低python版本的操作方法
Sep 11 Python
python实战之用emoji表情生成文字
May 08 Python
对PyTorch中inplace字段的全面理解
May 22 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实现图形显示Ip地址的代码及注释
2014/01/20 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
php数组随机排序实现方法
2015/06/13 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
Javascript call和apply区别及使用方法
2013/11/14 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
vue.js项目nginx部署教程
2018/04/05 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
Python遍历目录中的所有文件的方法
2016/07/08 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
快速查找Python安装路径方法
2020/02/06 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
python 模拟登陆github的示例
2020/12/04 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
什么是makefile? 如何编写makefile?
2012/08/08 面试题
优秀医生事迹材料
2014/02/12 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis