Перейти к содержанию

Практикум: прогрев, readiness и liveness

В этом варианте фоновые задания хранят своё состояние в Redis, и без него сервис не работает. На одну проверку Redis отводится не больше 250 мс. Клиент закрывается при выходе из области приложения, в том числе при ошибке запуска.

Драйвер запускает redis:7-alpine через Testcontainers и приостанавливает контейнер, чтобы получить настоящий сетевой тайм-аут. Он проверяет, что во время прогрева HTTP-порт ещё не открыт, после запуска обе пробы отвечают 200, сбой Redis меняет только readiness на 503, а восстановление возвращает readiness без перезапуска приложения. Прямой запрос /reports продолжает работать: учебный обработчик не обращается к Redis, а отрицательная readiness сама по себе не блокирует запросы.

В конце драйвер устанавливает событие остановки, проверяет readiness=503 при ещё работающем HTTP-сервере и закрытие ресурсов. Это локальная интеграционная проверка HTTP и Redis; сигналы ОС и пробы Kubernetes она не проверяет.

Нужен Docker. Скрипты импортируют общий сервис отчётов, поэтому сохраните соседний каталог.

Запустите из каталога docs/blog/lab/2026-09-07-warmup-readiness-liveness в копии репозитория:

uv run --no-project --python 3.13 --with-requirements requirements.txt python driver.py

Исходный код практикума на GitHub.