Locust вызывает больше запросов, чем количество пользователей для моделирования параметра

#
# run command: locust --host=localhost:8000
#
import inspect
import time
from settings import CONFIG
from locust import Locust, TaskSet, task, events
from lib.usermodule import user_create_service

def stopwatch(func):
    def wrapper(*args, **kwargs):
        # get task's function name
        previous_frame = inspect.currentframe().f_back
        _, _, task_name, _, _ = inspect.getframeinfo(previous_frame)

        start = time.time()
        result = None
        try:
            result = func(*args, **kwargs)
        except Exception as e:
            total = int((time.time() - start) * 1000)
            events.request_failure.fire(request_type="TYPE",
                                        name=task_name,
                                        response_time=total,
                                        exception=e)
        else:
            total = int((time.time() - start) * 1000)
            events.request_success.fire(request_type="TYPE",
                                        name=task_name,
                                        response_time=total,
                                        response_length=0)
        return result

    return wrapper


class GRPCMyClient:
    def __init__(self):
        self.usermodule_hostport = CONFIG['grpc']['mymodule_url']

    @stopwatch
    # this is the method we want to measure
    def user_create_service(self, service_name):
        user_create_service(service_name)
        return True


class GRPCMyLocust(Locust):
    def __init__(self):
        super(GRPCMyLocust, self).__init__()
        self.client = GRPCMyClient()


class GRPCMyTasks(TaskSet):
    @task
    def user_create_service(self):
        self.client.user_create_service("koustubh-api-test")


class GRPCMyUser(GRPCMyLocust):
    task_set = GRPCMyTasks
    min_wait = 1000
    max_wait = 1000

У меня есть вышеуказанный файл саранчи. Когда я запускаю этот файл, используя

locust -f mylocustfile.py

и получить доступ к localhost:8089

И установите

`Number of users to simulate -> 1`
`Hatch rate (users spawned/second) -> 1`

и запускаем тест. Количество запросов продолжает увеличиваться со скоростью 2 в секунду  введите описание изображения здесь

Я ожидал, что максимальное количество запросов будет только 1, поскольку и общее количество пользователей, и коэффициент вывода установлены на 1. Я что-то упускаю?


person kosta    schedule 18.06.2019    source источник


Ответы (1)


Когда вы используете Locust Web, он продолжает вылупляться, если вы не нажмете кнопку «Стоп», независимо от указанных #users. Чтобы преодолеть это, есть два варианта

  1. Продолжайте использовать Интернет, но в своем коде вы можете вызвать self.on_stop(), когда вылупится необходимое количество пользователей.

OR

  1. Вы можете использовать не веб-версию Locust, а затем вы можете использовать параметр времени выполнения в команде locust:

locust -f --no-web -c 1000 -r 100 - время выполнения 1ч30м

Саранча остановится через указанное время.

person Seema Nair    schedule 11.01.2020