v0.5.7: openapi.json кешируется в памяти — 33KB без перегенерации на каждый запрос

This commit is contained in:
2026-08-02 12:22:14 +04:00
parent 607a93f8d4
commit 32d1ecc5a3
3 changed files with 10 additions and 8 deletions
+1 -1
View File
@@ -80,7 +80,7 @@ SERVICES = _DF["SERVICES"]
OPS_INDEX = _DF["OPS_INDEX"]
DELAY = float(os.getenv("MOCK_OP_DELAY", "0.1"))
VERSION = "0.5.6"
VERSION = "0.5.7"
def get_services(stand_id):
+8 -6
View File
@@ -19,6 +19,9 @@ bp = Blueprint("openapi", __name__, url_prefix="/api/v1/svc")
# URL для сервера — из env или автоопределение
_SERVER_URL = os.getenv("POLYGON_ENDPOINT", "https://polygon.pythonk8s.dev.nubes.ru")
# Кеш спеки — генерится один раз, не на каждый запрос
_SPEC_CACHE = None
def _build_servers():
"""Список серверов — по одному на каждый стенд."""
@@ -33,12 +36,11 @@ def _build_servers():
@bp.route("/openapi.json", methods=["GET"])
def openapi_spec():
"""GET /api/v1/svc/openapi.json — OpenAPI 3.1.0 спецификация.
Возвращает полную спецификацию всех эндпоинтов полигона.
Динамически добавляет схемы параметров для каждого загруженного сервиса.
"""
return jsonify(_build_spec())
"""GET /api/v1/svc/openapi.json — OpenAPI 3.1.0 спецификация (кешируется)."""
global _SPEC_CACHE
if _SPEC_CACHE is None:
_SPEC_CACHE = _build_spec()
return jsonify(_SPEC_CACHE)
def _build_spec():