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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
python自动化生成IOS的图标
Nov 13 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
Python实现合并excel表格的方法分析
Apr 13 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
基于Python中random.sample()的替代方案
May 23 Python
python小程序之飘落的银杏
Apr 17 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
深入理解Pytorch微调torchvision模型
Nov 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
SONY ICF-F10中波修复记
2021/03/02 无线电
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
真正的ZIP文件操作类(php)
2007/07/21 PHP
PHP循环获取GET和POST值的代码
2008/04/09 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP合并静态文件详解
2014/11/14 PHP
php生成短域名函数
2015/03/23 PHP
js内置对象 学习笔记
2011/08/01 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
js密码强度校验
2015/11/10 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
python对象及面向对象技术详解
2016/07/19 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
python中round函数保留两位小数的方法
2020/12/04 Python
《植物妈妈有办法》教学反思
2014/02/25 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书