python实现websocket的客户端压力测试


Posted in Python onJune 25, 2019

使用python进行websocket的客户端压力测试,这个代码是从github上 找到。然后简单修改了下。大神运用了进程池,以及线程池的内容。所以保存下来,学习学习

然后需要说明的是:本次用的python2.7,也尝试用python3.6,但是老实出现websocket-client包和python3不能兼容的情况,提示没有相关的方法。所以不得已最后又采用了python2

# -*- coding:utf-8 -*-
# __author__ == 'chenmingle'
 
import websocket
import time
import threading
import json
import multiprocessing
import uuid
from threadpool import ThreadPool, makeRequests
 
# 修改成自己的websocket地址
WS_URL = "xxxx"
# 定义进程数
processes = 4
# 定义线程数(每个文件可能限制1024个,可以修改fs.file等参数)
thread_num = 700
index = 1
 
 
def on_message(ws, message):
 # print(message)
 pass
 
 
def on_error(ws, error):
 print(error)
 pass
 
 
def on_close(ws):
 # print("### closed ###")
 pass
 
 
def on_open(ws):
 global index
 index = index + 1
 
 def send_thread():
  # 设置你websocket的内容
  # 每隔10秒发送一下数据使链接不中断
  while True:
   ws.send(u'hello服务器')
   time.sleep(10)
 
 t = threading.Thread(target=send_thread)
 t.start()
 
 
def on_start(num):
 time.sleep(5)
 # websocket.enableTrace(True)
 ws = websocket.WebSocketApp(WS_URL + str(num),
        on_message=on_message,
        on_error=on_error,
        on_close=on_close)
 ws.on_open = on_open
 ws.run_forever()
 
 
def thread_web_socket():
 # 线程池
 pool_list = ThreadPool(thread_num)
 num = list()
 # 设置开启线程的数量
 for ir in range(thread_num):
  num.append(ir)
 requests = makeRequests(on_start, num)
 [pool_list.putRequest(req) for req in requests]
 pool_list.wait()
 
 
if __name__ == "__main__":
 # 进程池
 pool = multiprocessing.Pool(processes=processes)
 # 设置开启进程的数量
 for i in xrange(processes):
  pool.apply_async(thread_web_socket)
 pool.close()
 pool.join()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python随机生成彩票号码的方法
Mar 05 Python
在Python中操作字典之update()方法的使用
May 22 Python
详解Python命令行解析工具Argparse
Apr 20 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
python机器学习之贝叶斯分类
Mar 26 Python
Python之list对应元素求和的方法
Jun 28 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
基于python+selenium的二次封装的实现
Jan 06 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 Python
opencv python如何实现图像二值化
Feb 03 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 Python
python中metaclass原理与用法详解
Jun 25 #Python
python实现接口并发测试脚本
Jun 25 #Python
Python实现EXCEL表格的排序功能示例
Jun 25 #Python
python实现动态创建类的方法分析
Jun 25 #Python
python pandas写入excel文件的方法示例
Jun 25 #Python
python多线程http压力测试脚本
Jun 25 #Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 #Python
You might like
也谈截取首页新闻 - 范例
2006/10/09 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
php显示时间常用方法小结
2015/06/05 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
javascript删除一个html元素节点的方法
2014/12/20 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python实现通过shelve修改对象实例
2014/09/26 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
基于python检查矩阵计算结果
2020/05/21 Python
女性时尚在线:IVRose
2019/02/23 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
西部世纪面试题
2014/12/05 面试题
承认错误的检讨书
2014/01/30 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
任命通知范文
2015/04/21 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
python 调用js的四种方式
2021/04/11 Python
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python