Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Основы Locust: установка, первый тест, Web UI
locust_basics

Основы Locust: установка, первый тест, Web UI

Что такое Locust, зачем он нужен. Установка, структура locustfile, запуск через CLI и Web UI.

Основы Locust: установка, первый тест, Web UI

Locust — нагрузочный инструмент, где сценарии пишутся на чистом Python. Вместо XML-конфигов вы описываете поведение пользователя обычным кодом, а инструмент симулирует тысячи таких пользователей одновременно.

#1. Зачем нагрузочное тестирование

Нагрузочное тестирование отвечает на вопрос: что произойдёт с приложением, когда к нему одновременно обратятся сотни или тысячи пользователей? Без такого теста вы узнаете ответ только в production — в момент пикового трафика или при вирусном росте.

Locust позволяет:

  • Измерить пропускную способность (requests/second) и время отклика (latency)
  • Найти узкие места до выкатки в production
  • Проверить, выдерживает ли система заявленные SLA (например, p95 < 500ms)
  • Сравнить производительность до и после оптимизаций

#2. Установка

Locust устанавливается через pip. Рекомендуется использовать виртуальное окружение, чтобы не засорять глобальный интерпретатор:

python -m venv .venv source .venv/bin/activate # Linux/macOS # или .venv\Scripts\activate # Windows pip install locust

После установки проверьте версию:

locust --version # Locust 2.x.x

Для продвинутых сценариев с высокой производительностью HTTP-запросов устанавливают дополнительный пакет geventhttpclient:

pip install locust[geventhttpclient]

Это даёт доступ к FastHttpUser, который значительно быстрее стандартного HttpUser при большом числе пользователей.

#3. Структура locustfile

Весь сценарий описывается в файле locustfile.py. Минимальная структура — класс-наследник HttpUser с хотя бы одной задачей, помеченной декоратором @task:

from locust import HttpUser, task, between class WebsiteUser(HttpUser): wait_time = between(1, 3) # пауза между задачами: от 1 до 3 секунд @task def browse_homepage(self): self.client.get("/") @task(3) def browse_catalog(self): self.client.get("/catalog")

Разберём каждый элемент:

  • HttpUser — базовый класс для пользователя, который отправляет HTTP-запросы. Предоставляет self.client — сессию requests с автоматическим сбором статистики.
  • wait_time = between(1, 3) — случайная пауза между выполнением задач. Имитирует реальное поведение: люди не кликают мгновенно.
  • @task — помечает метод как задачу Locust. Число в @task(3) — относительный вес: browse_catalog вызывается в 3 раза чаще, чем browse_homepage.

#4. Запуск через CLI

Чтобы запустить тест с Web UI:

locust -f locustfile.py

Locust откроет веб-интерфейс по адресу http://localhost:8089. Там вы укажете:

  • Number of users — максимальное число виртуальных пользователей
  • Spawn rate — сколько пользователей появляется в секунду до достижения максимума
  • Host — базовый URL тестируемого сервиса (например, http://localhost:8000)

Можно передать параметры сразу в командной строке, минуя форму в UI:

locust -f locustfile.py \ --host http://localhost:8000 \ --users 100 \ --spawn-rate 10

#5. Web UI: что смотреть

После запуска теста Web UI показывает несколько ключевых вкладок.

На вкладке Statistics — таблица с метриками по каждому эндпоинту:

  • RPS (Requests per Second) — пропускная способность
  • Failures/s — количество ошибок в секунду
  • Median / 95%ile / 99%ile — перцентили времени отклика в миллисекундах
  • Min / Max — крайние значения

На вкладке Charts — графики в реальном времени: RPS, время отклика, число активных пользователей.

На вкладке Failures — список упавших запросов с кодами ошибок и сообщениями.

Перцентили (p95, p99) важнее среднего значения. Среднее скрывает выбросы: если 99% запросов отвечают за 50ms, а 1% — за 30 секунд, среднее будет обманчиво низким.

#6. Ключевые концепции

User (виртуальный пользователь) — экземпляр вашего класса. Locust запускает столько greenlet-потоков (через gevent), сколько пользователей указано. Greenlets — это лёгкие корутины, поэтому можно симулировать тысячи пользователей на одном ядре.

Task — единица работы одного пользователя. После выполнения задачи пользователь ждёт wait_time и выбирает следующую задачу случайно с учётом весов.

Spawn rate — скорость появления новых пользователей. Если --users 1000 --spawn-rate 10, то система будет раскручиваться 100 секунд, что даёт возможность наблюдать поведение системы под нарастающей нагрузкой.

Host — базовый URL. Все относительные пути в self.client.get("/path") разворачиваются относительно него.

Далее: HttpUser: задачи, веса, паузы, валидация ответов