python脚本使用locust压测websocket消息(含队列-自定义消息请求顺序)

老样子,注释都有
from locust import HttpUser, TaskSet, task
from websocket import create_connection
import json, time, queue

# 建立一个websocket连接
ws = create_connection("wss://XXX.com/websocket?platform=1&token=74348d&bizType=1")     
print(f'websocket连接状态:{ws.connected}')
top_num = int(time.time())

class Demo(TaskSet):
    @task(66)
    def im_socket(self):
        if ws.connected == True:
            user_num = self.parent.queueData.get_nowait()  # 从queueData中取值(该队列循环-先进先出)
            self.parent.queueData.put_nowait(user_num)  # 将取到的数再丢回队列(后进后出),即可循环使用
            message = '{"event":1,"data":{"msgType":1,"sessionId":"1684491776793976832","msgContent":"单个用户单个连接%s消息序号%s"}}'%(top_num,user_num)   
            print(message)
            ws.send(message)
            # print(f'接收返回结果:{ws.recv()}')
        else:
            print(f'websocket连接失败!!!!!!!!!!!!!!!')

class websitUser(HttpUser):
    tasks = [Demo]    # 指向定义了用户行为的类Demo

    queueData = queue.Queue()  # 初始化queue队列, 先进先出
    for user_num in range(1, 101):
        queueData.put_nowait(user_num)  # 将测试数据添加至队列

    min_wait = 1000  #模拟负载的任务之间执行时的最小等待时间,单位为毫秒
    max_wait = 5000

if __name__=="__main__":
    import os
    os.system("locust -f Locust.py --host=https://xxx.com --headless -u 5 -r 2 -t 30s --html HTML_FILE")  #访问地址http://localhost:8089
    print('==================关闭连接,任务结束==================')
    ws.close()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用PythonLocust来进行对ES7的压测。首先,确保你已经安装了PythonLocust。 接下来,你需要安装elasticsearch-py库,它是Python与Elasticsearch进行交互的库。可以使用以下命令安装: ``` pip install elasticsearch ``` 然后,创建一个Python脚本,导入必要的模块和库: ```python from locust import HttpUser, task, between from elasticsearch import Elasticsearch class ESUser(HttpUser): wait_time = between(1, 5) def on_start(self): # 创建一个Elasticsearch客户端连接 self.client = Elasticsearch(['localhost:9200']) @task def search(self): # 定义一个搜索任务 query = { "query": { "match_all": {} } } # 发送搜索请求 response = self.client.search(index='your_index', body=query) # 打印搜索结果 print(response) ``` 在上面的代码中,我们创建了一个名为ESUser的Locust用户类。在`on_start`方法中,我们创建了一个Elasticsearch客户端连接。 然后,在`@task`装饰的`search`方法中,我们定义了一个搜索任务。你可以根据自己的需求修改查询条件。在该方法中,我们发送了一个搜索请求,并打印了搜索结果。 最后,你可以在命令行中使用Locust命令来启动压测: ``` locust -f your_script.py --host=http://localhost:9200 ``` 替换`your_script.py`为你的脚本文件名,`http://localhost:9200`为你的ES7的地址。 然后,你可以在浏览器中访问Locust的Web界面(默认为http://localhost:8089)来配置并启动压测。 注意:在进行压测之前,请确保你已经在ES7中创建了索引,并且数据已经准备好。另外,压测会对目标系统造成一定的负载,请谨慎使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值