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

Lihil

The Official website of python webframework lihil

НачатьGitHub
openai
from lihil import Lihil, Route, Stream
from openai import OpenAI
from openai.types.chat import ChatCompletionChunk as Chunk
from openai.types.chat import ChatCompletionUserMessageParam as MessageIn
gpt = Route("/gpt", deps=[OpenAI])
def message_encoder(chunk: Chunk) -> bytes:
if not chunk.choices:
return b""
return chunk.choices[0].delta.content.encode() or b""
@gpt.sub("/messages").post(encoder=message_encoder)
async def add_new_message(
client: OpenAPI, question: MessageIn, model: str
) -> Stream[Chunk]:
async for chunk in client.responses.create(
messages=[question], model=model, stream=True
):
yield chunk

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])
@todo.get
async def get_todos(todo_repo: TodoRepo, n: Annotated[int, Param(lt=100)]):
return await todo_repo.list_todos()
@todo.post
async def create_todo(item: TodoItem, todo_repo: TodoRepo) -> Annotated[Empty, 201]:
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 для создания быстрых, надёжных и масштабируемых веб-приложений.

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