You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Чего не хватает до «полноценного» веб-фреймворка (ресерч)
Документ фиксирует разрыв между текущим OxyRoute (RSGI + Rust hot path, см. index) и ожиданиями от широкого HTTP-фреймворка уровня FastAPI / Starlette / Django REST. Термин «полноценный» здесь означает покрытие типичного продакшн-API и DX, а не обязательность всех пунктов для твоего позиционирования.
Текущий контекст: документация ниже описывает состояние ветки v0.3.x: OxyRoute
теперь RSGI-only, ASGI bridge удалён, native RSGI WebSocket реализован, а часть
пунктов из старого research уже закрыта. Для практического использования см.
usage.md.
Уже есть (кратко)
Маршрутизация по методам и путям (matchit), path/query/json/body, 405 / Allow, HEAD на GET, OPTIONS.
JWT (HS/RS/… через jsonwebtoken), iss/aud/leeway, cookie, зависимости с request, линейный порядок, freeze.
Response / dict с заголовками и cookies, частичный OpenAPI, Pydantic/schema для тела.
App.state (SimpleNamespace), хуки __rsgi_init__ / __rsgi_del__, пример examples/rsgi_lifespan_app.py — закрыто в #18.
Сессии (signed cookie, server-side)
Нет
Кэш глобальных настроек
Нет
Нет первого класса для config.
6. Разработка и тестирование
Тема
Зазор
Комментарий
TestClient (как Starlette/FastAPI)
Нет
Тесты через in-process RSGI shims или реальный Granian; нет единого обёрточного клиента из коробки.
CLI (oxyroute dev, scaffold)
Нет
OpenAPI генерация клиентов
Частично
Документ есть; не обещается полная совместимость со всеми генераторами.
Background tasks
Нет
Нет BackgroundTasks после ответа; только внешний воркер/очередь.
7. Наблюдаемость
Тема
Зазор
Комментарий
Structured access log
Зависит от Granian
Нет формата «как у фреймворка».
Metrics (Prometheus)
Нет
Tracing (OpenTelemetry)
Нет
8. Экосистема и позиционирование
ORM / миграции — не часть HTTP-фреймворка; обычно SQLAlchemy + Alembic отдельно.
Шаблоны HTML (Jinja) — нет; для API не критично.
GraphQL / gRPC — отдельные стеки.
OxyRoute осознанно уже в нише: быстрый RSGI HTTP/WebSocket слой с routing,
JSON/form/JWT/headers на Rust hot path и Python business logic. «Полноценность»
для многих команд теперь упирается меньше в протокол, а больше в стриминг тела
запроса, цепочку middleware, TestClient, observability, rate limit
и production security automation.
Приоритизация (рекомендация)
Streaming / early body limiting — сейчас body и multipart читаются в память.
Middleware chain — сейчас один pre-route hook, compose вручную.