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 list中append()与extend()用法分享
Mar 24 Python
python实现系统状态监测和故障转移实例方法
Nov 18 Python
详解Python的Lambda函数与排序
Oct 25 Python
Django的信号机制详解
May 05 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
Django中自定义模型管理器(Manager)及方法
Sep 23 Python
Django 请求Request的具体使用方法
Nov 11 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 Python
为什么是 Python -m
Jun 19 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 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 事务处理数据实现代码
2010/05/13 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
js的with语句使用方法
2007/09/21 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
js获取当前路径的简单示例代码
2014/01/08 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
Preload基础使用方法详解
2020/02/03 Javascript
python用来获得图片exif信息的库实例分析
2015/03/16 Python
python基础教程之Filter使用方法
2017/01/17 Python
python实现逻辑回归的方法示例
2017/05/02 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
python处理excel绘制雷达图
2019/10/18 Python
详解Python的三种拷贝方式
2020/02/11 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
致接力运动员广播稿
2014/02/17 职场文书
天气温馨提示语
2015/07/14 职场文书
学生病假条范文
2015/08/17 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
python 制作一个gui界面的翻译工具
2021/05/14 Python
Golang 切片(Slice)实现增删改查
2022/04/22 Golang