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构造函数及解构函数介绍
Feb 26 Python
编写Python的web框架中的Model的教程
Apr 29 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Django使用httpresponse返回用户头像实例代码
Jan 26 Python
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
Python中@property的理解和使用示例
Jun 11 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
python工具——Mimesis的简单使用教程
Jan 16 Python
Python学习之time模块的基本使用
Jan 17 Python
Python使用pyecharts控件绘制图表
Jun 05 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
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
popdiv
2006/07/14 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
深入解析Python中的__builtins__内建对象
2016/06/21 Python
python搜索包的路径的实现方法
2019/07/19 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
大学生个人自荐信
2014/02/24 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
水知道答案观后感
2015/06/08 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
人民币使用说明书
2019/04/17 职场文书