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 08 Python
Python 文件管理实例详解
Nov 10 Python
教大家玩转Python字符串处理的七种技巧
Mar 31 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
python从子线程中获得返回值的方法
Jan 30 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
django创建简单的页面响应实例教程
Sep 06 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
如何在vscode中安装python库的方法步骤
Jan 06 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 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页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP中Array相关函数简介
2016/07/03 PHP
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
求职推荐信
2013/10/28 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
就业自荐书
2013/12/05 职场文书
元旦获奖感言
2014/03/08 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
2014年手术室工作总结
2014/11/26 职场文书
使用Python获取字典键对应值的方法
2022/04/26 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python