Ravyn - фреймворк, который берёт лучшее от FastAPI, Django и NestJS
Если вы пишете API на Python, выбор обычно стоит между FastAPI, Django (DRF) и, реже, Litestar. У каждого свой набор компромиссов: FastAPI даёт скорость разработки и OpenAPI из коробки, но держит вас на декораторах и не даёт готовой системы permissions. Django даёт зрелую экосистему и permissions, но тяжелее и менее async-native. Ravyn - попытка собрать то, что обычно берут по частям из разных фреймворков, в одном месте.
Откуда взялся Ravyn
Ravyn изначально был написан поверх Starlette, как и FastAPI. В какой-то момент авторы (Tiago Silva и команда) написали собственный ASGI-слой - Lilya, и Ravyn переехал на него.
Так получилось два отдельных проекта:
-
Lilya - ASGI toolkit. Почти без жёстких зависимостей, полностью типизирован, работает и с asyncio, и с trio. Ключевая идея: каждый компонент (middleware, permissions, роутер) - это самостоятельное ASGI-приложение, которое можно подключить в другой фреймворк, в том числе в FastAPI
-
Ravyn - фреймворк поверх Lilya и Pydantic. Berёт дизайн API и автогенерацию OpenAPI близко к FastAPI, систему permissions и settings ближе к Django, контроллеры и dependency injection в духе NestJS
Лицензия у обоих - BSD-3-Clause. Ravyn требует Python 3.10+.
Что внутри
Из того, что отличает Ravyn от типичного "ещё одного FastAPI":
-
permissions как в Django - не нужно городить свою систему прав поверх декораторов, она встроена
-
выбор стиля - можно писать функциями с декораторами (быстро набросать) или ООП-контроллерами (когда проект вырос и роутер-файл на 40 эндпоинтов стал нечитаемым) - в одном проекте, по модулям
-
нативная поддержка Edgy (ORM для реляционных БД) и Mongoz (ODM для MongoDB) - не нужно отдельно собирать связку с ORM
-
встроенный scheduler, dependency injection, middleware - без сборки из сторонних пакетов
-
автогенерация OpenAPI/Swagger, встроенный тестовый клиент
-
scaffolding для старта проекта
У Lilya отдельно стоит отметить инструмент миграции с FastAPI (https://lilya-converter.dymmond.com/) - если сейчас на FastAPI и хочется попробовать перейти на ASGI-слой Lilya, не переписывая всё руками.
Код
Минимальный пример на Lilya:
from lilya.apps import Lilya
from lilya.requests import Request
from lilya.responses import Ok
from lilya.routing import Path
async def welcome():
return Ok({"message": "Welcome to Lilya"})
async def user(user: str):
return Ok({"message": f"Welcome to Lilya, {user}"})
async def user_in_request(request: Request):
user = request.path_params["user"]
return Ok({"message": f"Welcome to Lilya, {user}"})
app = Lilya(
routes=[
Path("/{user}", user),
Path("/in-request/{user}", user_in_request),
Path("/", welcome),
]
)
И на Ravyn:
from ravyn import Ravyn, get, JSONResponse
app = Ravyn()
@app.get("/")
def welcome() -> JSONResponse:
return JSONResponse({"message": "Welcome to Ravyn!"})
@app.get("/hello/{name}")
def greet(name: str) -> JSONResponse:
return JSONResponse({"message": f"Hello, {name}!"})
Синтаксис может измениться в новых версиях.
Кто уже использует
Несмотря на молодость проекта, Ravyn и Lilya уже используются в проде в местах с высокими требованиями к надёжности: Bank of England, несколько стартапов в Лондоне, SCOR (четвёртая по величине перестраховочная компания в мире).
О масштабе
Не буду делать вид, что это готовый конкурент FastAPI. На момент публикации (данные GitHub, июль 2026):
- FastAPI - 100 469 звёзд
- Django - 88 205 звёзд
- Starlette - 12 474 звезды
- Litestar - 8331 звезда
- Ravyn - 389 звёзд, 21 форк, 16 контрибьюторов
- Lilya - 68 звёзд, 5 форков, 6 контрибьюторов
Разрыв большой, и это честная точка отсчёта, а не "фреймворк, который все уже используют". Оба проекта активно поддерживаются (коммиты каждый день на момент написания), но community маленькое. Если вам важна экосистема готовых пакетов и Stack Overflow-ответов на любой вопрос - пока это к FastAPI или Django. Если интересно попробовать другой набор архитектурных решений и не против того, что что-то придётся решать самостоятельно - вот тут Ravyn и Lilya могут быть интересны.
Итог
Ravyn не пытается быть FastAPI-убийцей. Это попытка собрать permissions от Django, гибкость контроллеров от NestJS и API-эргономику от FastAPI в одном месте, поверх собственного лёгкого ASGI-слоя Lilya. Проект молодой, но активно развивается.
Установка:
pip install ravyn
pip install lilya
Документация: lilya.dev, ravyn.dev. Репозитории: Lilya, Ravyn. Комьюнити в Discord
Если решите попробовать - интересно услышать, чего не хватает по сравнению с тем, чем пользуетесь сейчас.
Авторизуйтесь, чтобы оставить комментарий.
Нет комментариев.
Тут может быть ваша реклама
Пишите info@aisferaic.ru