v0.5.7: openapi.json кешируется в памяти — 33KB без перегенерации на каждый запрос
This commit is contained in:
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user