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的Tornado框架中session支持的实现代码
Aug 21 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
浅析python中的迭代与迭代对象
Oct 08 Python
用Python实现数据的透视表的方法
Nov 16 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
Python依赖包整体迁移方法详解
Aug 15 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
python的Jenkins接口调用方式
May 12 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
php设计模式 Builder(建造者模式)
2011/06/26 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
python实现SMTP邮件发送功能
2020/06/16 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
大学生入党思想汇报
2014/01/01 职场文书
仓库主管岗位职责
2014/03/02 职场文书
信息总监管理职责范本
2014/03/08 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
警察群众路线整改措施
2014/09/26 职场文书
物业工程部岗位职责
2015/02/11 职场文书
检讨书格式
2015/05/07 职场文书
首席执行官观后感
2015/06/03 职场文书
身份证丢失证明
2015/06/19 职场文书
安全生产培训心得体会
2016/01/18 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
Python使用Kubernetes API访问集群
2021/05/30 Python