Articles

Lilya или Ravyn - когда нужен toolkit, а когда фреймворк

Михаил Омельченко
Автор
Михаил Омельченко
Опубликовано 17.07.2026
0,0
Views 0

В проекте два пакета, 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.

Авторизуйтесь, чтобы оставить комментарий.

Комментариев: 0

Нет комментариев.

Тут может быть ваша реклама

Пишите info@aisferaic.ru

Похожие статьи