locust 分布式模式下启动多个工作进程等待

from locust import HttpUser, task, between, constant
import os
import webbrowser


class QuickstartUser(HttpUser):
    # between模拟同一个用户前后操作的等待时间随机(1-5秒)
    wait_time = between(1, 5)
    # constant固定用户前后操作时间为5秒
    # wait_time = constant(5)

    """压力脚本模板开始"""

    # @task(3)  # 需要压测的接口都需要加task,后面的数据为权重,默认权重1
    # def function1(self):
    #
    #     # 请求数据
    #     data = {"request": "{'serviceId':'report.getTest'}", "messageType": "json"}
    #     # 请求地址
    #     refresh_url = ":8157/datacent/unity/queryForJson//"
    #     # 请求头
    #     headers = {'Content-Type': "application/x-www-form-urlencoded;charset=UTF-8", "apiKey": "HIS5", "operator": "1"}
    #
    #     # 开始模拟请求,“catch_response=True”为断言标记支持,如果不加,断言标记报错
    #     with self.client.post(url=refresh_url, data=data, headers=headers, verify=False,
    #                           catch_response=True) as refresh_res:
    #         # 请求结束进入断言,断言方式与requests请求断言完全相同,根据需要编写。
    #         if refresh_res.json()["code"] == "00000":
    #             # 断言成功,标记成功
    #             refresh_res.success()
    #         else:
    #             # 断言成功,标记失败
    #             refresh_res.failure("select_1_from_dual失败")

    @task(3)  # 需要压测的接口都需要加task,后面的数据为权重,默认权重1
    def function1(self):
        self.client.get("/")

    """压力脚本模板结束"""

    def on_start(self):
        # 点击开始压测时,所有用户都会去运行一次,如:用做模拟登录,采用self.client模拟登录接口
        print("开始压测")

    def on_stop(self):
        # 点击stop时,所有用户都会去运行一次。
        print("结束压测结束")


if __name__ == "__main__":
    # 控制浏览器打开locust页面
    # webbrowser.open_new_tab('http://localhost:8089')
    """ "
    locust -f locustfile.py --master --headless -u 10 -t 10s -r 5 --host=http://127.0.0.1:8000
    locust -f locustfile.py --master --headless --expect-workers=3 -u 10 -t 10s -r 5 --host=http://127.0.0.1:8000

    locust -f locustfile.py --worker --host=http://127.0.0.1:8000

    1. 没法新建主节点
        1. 消息mq过来,判断子节点数量, 设置一个最低的3个,如果有则启动主节点, 没有手动通知.
        2. 子节点就监听 redis, 如果有开始拉起子节点, 并 incr+1
        3. 启动开始测试, 有一个默认执行时间.

    2. 数据没法收集
        1. 数据只能是结尾时收数据, 收集所有的执行数据.
        2. 如果想要执行过程的数据, 在执行中获取消息, 监听消息保存数据.
    """

你可能感兴趣的:(python)