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 提取文件的小程序
Jul 29 Python
9种python web 程序的部署方式小结
Jun 30 Python
Python基类函数的重载与调用实例分析
Jan 12 Python
在Python中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
Jun 29 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
python tkinter界面居中显示的方法
Oct 11 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Python字典dict常用方法函数实例
Nov 09 Python
python scrapy简单模拟登录的代码分析
Jul 21 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仿ZOL分页类代码
2008/10/02 PHP
php中session定期自动清理的方法
2015/11/12 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
原生js简单实现放大镜特效
2017/05/16 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
简单解析Django框架中的表单验证
2015/07/17 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
幽灵公主观后感
2015/06/09 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL