Перейти к основному содержимому
Производительность. Продуктивность. Профессионализм.

Lihil

The Official website of python webframework lihil

НачатьGitHub
api/v1/agent.py
from lihil import Lihil, Route, EventStream, SSE, Param
from .api.param import UUID_PATTERN
UUIDStr = Annotated[str, Param(min_length=36, pattern=UUID_PATTERN)]
@messages.post
async def send_message_v1(
session_id: UUIDStr,
request: AgentRequest,
agent: Annotated[IAgent, use(get_agent)],
) -> EventStream:
async_gen = agent.handle(
request.content, user_id=request.user, session_id=session_id
)
yield SSE(event="open", data=await anext(async_gen))
async for ans in async_gen:
yield SSE(event="token", data=ans)
yield SSE(event="done", data="")

50%-100%

Быстрее других ASGI фреймворков, больше возможностей для крупных приложений. бенчмарки

100%

Покрыт тестами и строго типизирован

> 45K

RPS (на поток CPU)


Get Started in Seconds

Lihil is designed for simplicity without sacrificing power. Install with pip and start building your next Python web application.

$|
Установить

Создайте REST API за минуты

app.py
from lihil import Lihil, HTTPException, Struct, Route, Param, Annotated, Empty
class TodoItem(Struct):
id: int
title: str
completed: bool = False
todo = Route("/todos", deps=[TodoRepo])
PosInt = Annotated[int, Param(gt=0)]
Todos = list[TodoItem]
@todo.get
async def get_todos(todo_repo: TodoRepo, n: PosInt) -> Todos:
return await todo_repo.list_todos()
CREATED = Annotated[Empty, 201]
@todo.post
async def create_todo(item: TodoItem, todo_repo: TodoRepo) -> CREATED:
await todo_repo.add(item)
if __name__ == "__main__":
lhl = Lihil(todo)
lhl.run(__file__)

Почему выбирают lihil?

Чистый, мощный Python веб-фреймворк, созданный для современных приложений.
Парсинг и валидация параметров

Автоматический парсинг и валидация данных запроса из пути, параметров запроса, заголовков и тела с помощью msgspec — в 12 раз быстрее и в 25 раз более эффективно по памяти, чем Pydantic.

Мощная инъекция зависимостей

Внедрение зависимостей на основе аннотаций типов. Поддерживает фабрики, асинхронность, области видимости и синглтоны — всё молниеносно быстро.

WebSocket

Обработка WebSocket-соединений с чистыми, типобезопасными API. Легко тестируется с помощью встроенного WebSocket тест-клиента.

OpenAPI и документация ошибок

Автогенерация OpenAPI документации и детальных описаний проблем. Пользовательские исключения превращаются в понятные API-ответы.

Аутентификация и авторизация

Встроенная поддержка JWT и OAuth2. Объекты аутентификации типобезопасны и сериализуемы.

Система сообщений

Встроенная система событий для публикации и обработки событий, как внутрипроцессных, так и межпроцессных, эффективно.

Отличная тестируемость

Встроенный тест-клиент для эндпоинтов, маршрутов и middleware — никакой дополнительной настройки не требуется.

Эффективное использование памяти

Оптимизирован для минимального использования памяти. Накладные расходы сборщика мусора снижены, что делает сервисы более стабильными под нагрузкой.

Готов для ИИ

Создан с учётом ИИ. Встроенная поддержка SSE, MCP и удалённых обработчиков появится в ближайшее время.


Join the Community

Lihil is backed by a growing community of Python developers. Get support, contribute, and help shape the future of fast Python web development.

GitHubDiscordContribute
Latest Release

Loading...

Release Notes

Готовы создать что-то удивительное?

Присоединяйтесь к растущему сообществу разработчиков, использующих Lihil для создания быстрых, надёжных и масштабируемых веб-приложений.

Начать сейчас