Files
polygon/site/routes/root.py
T

48 lines
1.7 KiB
Python

"""
routes/root.py — корневые эндпоинты (/health, /).
Blueprint "root" регистрируется в app.py БЕЗ url_prefix.
Отвечает за healthcheck (для Nubes) и HTML-страницу с информацией о сервисе.
"""
from flask import Blueprint, render_template
import mock_state
from config.loader import SERVICES, DELAY
from utils.now import now as _now
# Версия — показывается на HTML-странице и в healthcheck (опционально)
VERSION = "0.2.1"
# Blueprint без префикса — роуты /health и / будут на корне домена
bp = Blueprint("root", __name__)
@bp.route("/health")
def health():
"""Healthcheck для Nubes.
Платформа периодически дёргает этот эндпоинт. Если вернёт не 200 —
контейнер будет перезапущен. Возвращаем просто "OK", без JSON.
"""
return "OK"
@bp.route("/")
def index():
"""Корневая HTML-страница с информацией о сервисе.
Показывает: версию, количество загруженных сервисов, количество инстансов,
текущую задержку операций. Использует Jinja2-шаблон templates/index.html
и внешний CSS из static/style.css.
"""
svc_count = len(SERVICES)
inst_count = len(mock_state.state.instances)
return render_template(
"index.html",
version=VERSION,
svc_count=svc_count,
inst_count=inst_count,
delay=DELAY,
)