python-websocket压力测试

embedded/2025/3/19 4:01:41/

一.websocket简介及安装

使用pip命令安装websocket库:pip install websocket-client

websocket.WebSocketApp 是对 websocket.WebSocket 的封装,支持自动定时发送 PING 帧,支持事件驱动方式的数据帧接收,可用于长期的 WebSocket 连接。

websocket中就有建立连接connect、发送消息send等函数可供使用,但是websocket.WebSocketApp将这些都封装好了,只用在实例化的时候传入自定义函数即可,更方便。

WebSocketApp也是websocket中的一个类。要使用WebSocketApp中的回调函数需要传入一系列的可调用对象。在实例化该类时传入构造函数中的on_open、on_message、on_error就需要传入一系列的可调用对象,例如自定义的函数。
 

二.方法

  运行WebSocketApp的事件循环,先创建webSocket对象,然后connect连接服务器,之后一直循环运行接收数据帧,回调对应函数处理数据帧;当websocket客户端被关闭后,将调用on_close()方法然后结束循环返回;当循环中发生异常时被捕捉,然后依次调用on_error(),on_close()方法,然后结束循环返回。

python"># -*- coding:utf-8 -*-import websocket
import time
import threading
import multiprocessing
from threadpool import ThreadPool, makeRequests"""
websocket长链接
"""# websocket地址
WS_URL = "ws://124.222.224.186:8800"
# 定义进程数
processes = 2
# 定义线程数(每个文件可能限制1024个,可以修改fs.file等参数)
thread_num = 3
# 拼接发送的消息
sendMsg = '{"appid":"futures","cover":0,"event":[\{"type":"exchange_rate","toggle":1,"expireTime":86400},\{"type":"accountInfo_USDT","toggle":1,"expireTime":'def on_message(ws, message):print("***message***", message)def on_error(ws, error):print("***error***", error)def on_close(ws, *args):print("***closed***")def on_open(ws):def send_thread():# 设置你websocket的内容# 每隔10秒发送一下数据使链接不中断while True:# ws.send('hello服务器' + str(time.time()))ws.send(sendMsg + str(time.time()) + '}]}')time.sleep(10)t = threading.Thread(target=send_thread)t.start()def on_start(num):time.sleep(5)ws = websocket.WebSocketApp(WS_URL,on_message=on_message,on_error=on_error,on_close=on_close)ws.on_open = on_openws.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 range(processes):pool.apply_async(thread_web_socket)pool.close()pool.join()

2个进程运行,各运行3个线程,建立6个连接,每10秒发送一次数据:


http://www.ppmy.cn/embedded/173756.html

相关文章

Webpack优化前端性能

Webpack优化前端性能☆☆ 涵盖了代码分割、懒加载、压缩、缓存优化、Tree Shaking、图片优化、CDN使用等多个方面。 Webpack优化前端性能详解(2025综合实践版) Webpack作为现代前端工程化的核心工具,其优化能力直接影响项目的首屏速度、交互流畅度和用户体验。以下从代码维…

SpringMVC——表现层数据封装、异常处理器

目录 数据封装协议 为什么要进行数据封装 实现数据封装 测试 异常处理器 实现异常处理器 项目异常处理 实现处理不同的异常 数据封装协议 为什么要进行数据封装 当接口响应格式不一致时: 前端需要为不同接口编写多种解析逻辑 错误处理逻辑难以统一 接口文…

游戏引擎学习第161天

回顾并计划今天的工作 我们从头开始编写一款完整的游戏,完全不依赖游戏引擎和库。我们会从最基本的渲染代码开始,一直到高层的AI代码,涵盖其中的一切。 目前,我们正在做一些比较轻松有趣的事情,可以说是比较随意的内…

deepseek连续对话与API调用机制

在调用DeepSeek等大模型进行连续对话时,是否需要每次上传系统提示和对话历史取决于API的设计机制。 一、API调用机制解析 无状态服务原则 DeepSeek的API基于无状态架构设计,每次请求视为独立会话。若需维持对话连续性,必须由客户端主动管理并…

2024浙江大学计算机考研上机真题

2024浙江大学计算机考研上机真题 2024浙江大学计算机考研复试上机真题 2024浙江大学计算机考研机试真题 2024浙江大学计算机考研复试机试真题 历年浙江大学计算机复试上机真题 历年浙江大学计算机复试机试真题 2024浙江大学计算机复试上机真题 2024浙江大学计算机复试机试真题 …

为什么需要使用十堰高防服务器?

十堰高防服务器的核心价值与应用必要性 一、‌应对复杂攻击的防御能力‌ ‌T级DDoS攻击防护‌ 十堰高防服务器搭载 ‌T级清洗中心‌,支持智能流量调度与分层处理,可抵御 ‌800Gbps-1.2Tbps‌ 的大规模混合攻击(如SYN Flood、UDP反射&#xff…

基于Pygame实现2048小游戏

目录 1. 项目概述 2. 开发环境 3. 核心代码 3.1 网格初始化 3.2 数字生成逻辑 3.3 移动与合并算法 4. 图形界面设计 4.1 颜色方案 4.2 界面元素 4.3 动画效果 5. 代码结构说明 6. 完整代码 7. 总结与扩展 1. 项目概述 2048是一款风靡全球的数字益智游戏&#xff…

SpringData Redis缓存:自定义序列化与过期策略

文章目录 引言一、Spring Cache与Redis集成基础二、Redis缓存配置基础三、自定义序列化策略四、实现自定义序列化器五、多级缓存配置六、自定义过期策略七、缓存注解的高级应用八、实现缓存预热与更新策略九、缓存监控与统计总结 引言 在现代高并发分布式系统中,缓…