Данный веб-сервис используется как объект нагрузочного тестирования с помощью инструмента Apache JMeter. Веб-сервис написан на языке Python с помощью фреймворка FastAPI.
Список реализованных эндпоинтов*:
/fast
- самый быстрый эндпоинт, никаких искусственных задержек/slow
- эндпоинт с небольшой задержкой/slower
- эндпоинт с существенной задержкой/slowest
- эндпоинт с очень большой задержкой/slow_with_deviation
- эндпоинт с задержкой, имеющей разброс в определенном диапазоне/random
- эндпоинт со случайной задержкой, имеющее равномерное распределение/random_gauss
- эндпоинт со случайной задержкой, имеющее нормальное распределение
Задание к практической работе находится здесь
Для установки и запуска требуется Python версии >= 3.11
-
Клонируем репозиторий и переходим в папку проекта:
$ git clone https://github.com/RuslanUsmanov/service_for_load_testing.git $ cd service_for_load_testing
-
Создаем виртуальное окружение:
$ python -m venv .venv
-
Активируем виртуальное окружение:
Linux:
$ source .venv/bin/activate
Windows:
$ .\.venv\Scripts\activate
-
Устанавливаем зависимости:
(.venv)$ pip install --upgrade -r requirements.txt
-
Запускаем сервер:
(.venv)$ uvicorn --workers 1 --host localhost --port 8000 app.main:app
-
Открываем в браузере адрес http://localhost:8000 и убеждаемся в работоспособности сервера.
-
Для остановки сервера нажмите комбинацию клавиш CTRL+C.
С помощью параметра --workers
, вы можете менять количество потоков выполняющихся на сервере. Чем больше потоков, тем более производителен сервер (но меру знать надо). Оптимальным значением здесь следует выбирать количество потоков поддерживаемых вашим процессором.
Собираем образ:
$ docker build -t service_for_tests .
Запускаем контейнер:
$ docker run -d --rm -p 8000:8000 --env WORKERS=1 service_for_tests:latest
Проверяем в браузере адрес http://localhost:8000