Практикум: прогрев, 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 в копии репозитория: