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复制与引用用法分析
Apr 08 Python
详解详解Python中writelines()方法的使用
May 25 Python
Python实现处理管道的方法
Jun 04 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
php中请求url的五种方法总结
2017/07/13 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
Js动态创建div
2008/09/25 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
jQuery功能函数详解
2015/02/01 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
python对指定目录下文件进行批量重命名的方法
2015/04/18 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
Python在线运行代码助手
2016/07/15 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
如何更优雅地写python代码
2019/07/02 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
高中生的学习总结自我鉴定
2013/10/26 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
年会搞笑主持词
2014/03/27 职场文书
房屋转让协议书范本
2014/04/11 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
聘用合同范本
2015/09/21 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书
MySQL锁机制
2021/04/05 MySQL