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列表推导式的使用方法
Nov 21 Python
python发送邮件示例(支持中文邮件标题)
Feb 16 Python
使用相同的Apache实例来运行Django和Media文件
Jul 22 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
django使用html模板减少代码代码解析
Dec 12 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
Python for循环及基础用法详解
Nov 08 Python
python pyenv多版本管理工具的使用
Dec 23 Python
Python递归函数特点及原理解析
Mar 04 Python
Python多线程多进程实例对比解析
Mar 12 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
Python机器学习之逻辑回归
May 11 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 pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
小谈php正则提取图片地址
2014/03/27 PHP
php之curl设置超时实例
2014/11/03 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
详解vue 数据传递的方法
2018/04/19 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
js实现点击生成随机div
2020/01/16 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
python实现图像全景拼接
2020/03/27 Python
深入了解Python 变量作用域
2020/07/24 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
台湾生鲜宅配:大口市集
2017/10/14 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
法律专业自我鉴定
2013/10/03 职场文书
毕业生求职的求职信
2013/12/05 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
设计专业毕业生求职信
2014/06/25 职场文书