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随机生成一个6位的验证码代码分享
Mar 24 Python
Python中的random()方法的使用介绍
May 15 Python
Python创建xml文件示例
Mar 22 Python
Python读写docx文件的方法
May 08 Python
Python实现的特征提取操作示例
Dec 03 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
Django 自定义404 500等错误页面的实现
Mar 08 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
Python内存映射文件读写方式
Apr 24 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 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设计模式之简单投诉页面实例
2016/02/24 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
Javascript 面向对象特性
2009/12/28 Javascript
js 内存释放问题
2010/04/25 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
python中元类用法实例
2014/10/10 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python将视频转换为全字符视频
2019/04/26 Python
Puppeteer使用示例详解
2019/06/20 Python
python之信息加密题目详解
2019/06/26 Python
python实发邮件实例详解
2019/11/11 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
工厂保洁员岗位职责
2013/12/04 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
品牌服务方案
2014/06/03 职场文书
关于教师节的广播稿
2015/08/19 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Python软件包安装的三种常见方法
2022/07/07 Python
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python