Lihil 是一个高性能、高效且专业的 Web 框架,专注于强类型和现代模式,以实现强大的后端开发。
FastAPI 的 DI(依赖)简单且以路由为中心,但与请求/响应生命周期紧密耦合 - 这使得跨层共享依赖关系变得更加困难。
Lihil 的 DI 可以在任何地方使用,支持高级生命周期,并且针对 Cython 进行了速度优化。
FastAPI 使用 Pydantic,虽然性能不错,但比 msgspec 慢得多(并且占用更多内存)。
两者都生成 OpenAPI 文档,但 Lihil 旨在提供更好的类型覆盖和问题细节(RFC-9457)。
Starlette 非常精简,但缺乏内置的 DI 系统、数据验证和结构化错误处理 - 我们必须自己组装这些部分。
Lihil 开箱即用,但仍然很轻量(在许多情况下,速度可与裸 ASGI 应用程序相媲美)。
Django 非常适合经典的 MVC 风格应用,但当需要微服务或 API 时,它会显得沉重而僵硬。
对于超过 100 DAU 的用户群,很可能会出现性能瓶颈。
Lihil 是异步优先、类型驱动的,更适合高性能 API 和 AI 后端。
lihil目前需要 python>=3.12
pip install lihil使用UV安装是推荐的方式,UV方式安装如下:1、初始化 Web 项目project_name
uv init project_name2、通过 UV 安装 Lihil,这将在专用的 VENV 中为我们解决所有依赖项。
uv add lihil简单的例子,app.py内容:
from lihil import Lihillhl = Lihil()@lhl.getasync def hello(): return {"hello": "world!"}命令行启动:
uv run python -m myproject.app --server.port=8080一个更现实的例子:
from lihil import Lihil, Route, use, EventBuschat_route = Route("/chats/{chat_id}")message_route = chat_route / "messages"UserToken = NewType("UserToken", str)@chat_route.factorydef parse_access_token( service: UserService, token: UserToken) -> ParsedToken: return service.decrypt_access_token(token)@message_route.postasync def stream( service: ChatService, token: ParsedToken, bus: EventBus, chat_id: str, data: CreateMessage) -> Annotated[Stream[GPTMessage], CustomEncoder(gpt_encoder)]: chat = service.get_user_chat(token.sub) chat.add_message(data) answer = service.ask(chat, model=data.model) buffer = [] async for word in answer: buffer.append(word) yield word await bus.publish(NewMessageCreated(chat, buffer))在 https://lihil.cc/lihil/tutorials/ 查看详细教程,涵盖如下:
长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等 推荐阅读
对抗样本:20行Python代码让95%准确率的图像分类器彻底失效
不仅仅是 Try/Except:资深 Python 工程师的错误处理工程化实践
点击 阅读原文 了解更多