Lilya или Ravyn - когда нужен toolkit, а когда фреймворк
В проекте два пакета, lilya и ravyn, и первый вопрос у всех одинаковый, какой из них ставить. Коротко: Lilya это ASGI toolkit, Ravyn это фреймворк поверх него. Разница в том, сколько решений инструмент принимает за вас.
Lilya это toolkit
Lilya берут, когда хотят собрать приложение сами и чтобы фундамент не мешал. Вот полный список его жёстких зависимостей из pyproject:
dependencies = [
"anyio>=3.4.0,<5",
"multidict>=6.0.4,<7.0.0",
"typing_extensions>=3.10.0; python_version < '3.11'",
"monkay>=0.4.0",
]
Четыре пакета, и один из них ставится только на Python ниже 3.11. Никакие ORM, библиотеки валидации или системы настроек не навязываются. Вы получаете роутинг, middleware, permissions, фоновые задачи, поддержку WebSocket и HTTP, CLI, и каждый из этих компонентов это самостоятельное ASGI-приложение, которое можно переносить.
Если ваша реакция на полноценный фреймворк - "он слишком много решает за меня", то ваш пакет Lilya.
Ravyn это фреймворк
Ravyn ставят, когда хотят, чтобы решения были приняты за вас. Он построен поверх Lilya и добавляет батарейки. Его зависимости:
dependencies = [
"lilya[standard]>=0.27.0",
"pydantic-settings>=2.9.0",
"orjson>=3.8.5,<4.0.0",
"msgspec>=0.20.0,<0.22.0",
"monkay>=0.5.0",
]
Lilya здесь в основе. Поверх неё Ravyn приносит валидацию на Pydantic, систему настроек и permissions в стиле Django, контроллеры с dependency injection, автогенерацию OpenAPI, планировщик, тестовый клиент и нативную поддержку ORM Edgy и ODM Mongoz.
Если ваша реакция на минимальный toolkit - "не хочу собирать всё это руками", то ваш пакет Ravyn.
Зачем вообще разделять
В большинстве экосистем это объединяют. Starlette это toolkit, а FastAPI фреймворк поверх, но это отдельные проекты разных мейнтейнеров, и фреймворк отслеживает релизы toolkit снаружи. Здесь фреймворк и toolkit специально ведёт одна команда, чтобы изменение в ASGI-слое и фреймворк, которому оно нужно, выходили синхронно.
Держать два пакета вместо одного большого фреймворка даёт две вещи. Можно взять только Lilya, почти без зависимостей, для сервиса, которому полный фреймворк не нужен. И поскольку компоненты Lilya это самостоятельные ASGI-приложения, один из них, например систему permissions, можно вынести в совсем другой фреймворк.
Как выбрать
Ставьте Lilya, если хотите минимальный ASGI-фундамент и готовы принести остальные части сами. Ставьте Ravyn, если хотите батарейки в комплекте и структуру, решённую за вас. Жёсткой привязки нет ни в одну сторону: под Ravyn лежит Lilya, поэтому переход между ними это не переписывание всей модели в голове, а добавление или снятие слоя фреймворка.
pip install lilya
pip install ravyn
Документация: lilya.dev и ravyn.dev. Оба проекта на github.com/dymmond.
Авторизуйтесь, чтобы оставить комментарий.
Нет комментариев.
Тут может быть ваша реклама
Пишите info@aisferaic.ru