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之Python文档
Oct 10 Python
几个提升Python运行效率的方法之间的对比
Apr 03 Python
python去除所有html标签的方法
May 05 Python
Python标准库06之子进程 (subprocess包) 详解
Dec 07 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
使用django实现一个代码发布系统
Jul 18 Python
Python Gitlab Api 使用方法
Aug 28 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
Python暴力破解Mysql数据的示例
Nov 09 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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
laravel学习教程之存取器
2016/07/30 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
Vue实现手机计算器
2020/08/17 Javascript
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
python 生成器协程运算实例
2017/09/04 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
优秀毕业生自荐信
2014/06/10 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
未婚证明范本
2015/06/15 职场文书
品德与社会教学反思
2016/02/24 职场文书