使用locust自定义客​​户端支持编写websocket服务器负载测试的示例

时间:2015-11-19 03:38:24

标签: python websocket locust

我需要一个关于如何用自定义客户端(在我的例子中是WebSocket服务器)编写locust负载测试的示例或解释。我看到了蝗虫documentation中给出的解释,但我得到了通过蝗虫触发蝗虫事件挂钩的函数__getattr__def wrapper(*args, **kwargs):的准确性。

1 个答案:

答案 0 :(得分:1)

我今天正在玩这个,并且发现自定义示例有点棘手,因为很难说出魔法在哪里发生。这是一个更简单的客户端版本和任务与用户交互。而不是装饰器捕获任何任意方法到客户端,我使它只能做一件事,所以你可以看到时间和错误处理发生的地方,以及它如何使用蝗虫事件挂钩发送成功和失败。

import time

from locust import TaskSet, task, Locust, events


class SimpleClient(object):

    def __init__(self):
        pass

    def execute(self, name):
        start_time = time.time()
        try:
            print("do your things cause stress and throw exceptions here.")
            time.sleep(1)
        except Exception as e:
            total_time = int((time.time() - start_time) * 1000)
            events.request_failure.fire(request_type="execute", name=name, response_time=total_time, exception=e)
        else:
            total_time = int((time.time() - start_time) * 1000)
            events.request_success.fire(request_type="execute", name=name, response_time=total_time, response_length=0)


class SimpleTasks(TaskSet):

    @task
    def simple_task(self):
        self.client.execute('simple_things')


class SimpleUser(Locust):
    def __init__(self, *args, **kwargs):
        super(Locust, self).__init__(*args, **kwargs)
        self.client = SimpleClient()

    task_set = SimpleTasks
    min_wait = 1000
    max_wait = 10000

然后您可以在终端中使用以下内容运行:

locust -f simple_test.py --no-web --clients=2 --hatch-rate=2 --num-request=4 --print-stats --only-summary