Короткий ответ
Health check — отдельный эндпоинт (например /health), который сообщает, жив ли сервис и готов ли принимать трафик; используется балансировщиком и оркестратором для роутинга и перезапуска.
Как это работает подробнее
Оркестратор периодически опрашивает эндпоинт; если ответ не 200 OK — инстанс исключается из балансировки (readiness) или перезапускается (liveness).
Пример кода
example.py
@app.get("/health/ready")
def readiness():
if not db.ping():
return JSONResponse(status_code=503, content={"status": "db unavailable"})
return {"status": "ok"}Что использовать на практике
- Практика. Различают liveness (процесс жив) и readiness (готов обслуживать запросы, например БД доступна); readiness часто проверяет критичные зависимости.
Подводные камни
- Риск. Делать health check тяжёлым (полный прогон бизнес-логики); не разделять liveness и readiness, из-за чего временная недоступность внешней зависимости приводит к перезапуску здорового процесса.