Litestar:专注 API 的 Python ASGI 框架

Litestar 是一个 Python ASGI 框架,目前在 GitHub 上收获了 8,258 颗 Star。

正文顶部截图

README区域截图

Litestar 的设计目标是构建 API。它提供了高性能数据验证、依赖注入、ORM 集成、授权机制、插件 API 和中间件等组件。

核心特性

Litestar 支持基于类的控制器和基于函数的路由处理器两种写法。框架对类型注解有严格要求,如果忘记给路由处理器标注返回类型,会直接抛出异常。这是因为 Litestar 将类型信息用于生成 OpenAPI 文档,以及验证和解析数据。类型注解是框架的基础设施,不允许省略。

数据序列化和反序列化由 msgspec 驱动。Litestar 内置了 SQLAlchemy 插件,允许直接在路由中使用声明式类作为参数类型和返回值,不需要手动转换。

框架自动生成 OpenAPI 3.1 规范,并可选使用 polyfactory 生成示例数据。文档界面方面,Litestar 内置了 ReDoc、Swagger UI、RapiDoc、Stoplight Elements 和 Scalar 五种方案,默认全部启用。

依赖注入系统借鉴了 pytest 的设计。你可以在应用的不同层级定义命名依赖,支持同步和异步,也可以选择性覆盖。

中间件方面,Litestar 内置了 CORS、CSRF、速率限制、GZip / Brotli / Zstd 压缩、客户端会话和服务端会话。

授权通过 guards 机制实现。你可以在应用、路由器或控制器等层级设置守卫函数,在请求到达处理器前进行校验,未通过则抛出异常。

生命周期钩子支持 before_requestafter_request,与 Flask 的用法类似。

Litestar 同时支持 dataclass、TypedDict、msgspec、pydantic v1/v2 和 attrs 作为数据模型,支持在同一应用中混用不同版本的数据模型。

框架还实现了 RFC 9457 标准的 Problem Detail 错误响应,以及 Trio 支持。

类控制器的写法如下:

from litestar import Controller, get, post
from typing import List

class UserController(Controller):
    path = "/users"

    @post()
    async def create_user(self, data: User) -> User: ...

    @get()
    async def list_users(self) -> List[User]: ...

这种写法适合规模较大的项目,可以更好地组织路由逻辑。

安装与使用

通过 pip 安装:

pip install litestar

如需 CLI 和 uvicorn 服务器:

pip install 'litestar[standard]'

快速启动示例:

from litestar import Litestar, get

@get("/")
async def hello_world() -> dict[str, str]:
    return {"hello": "world"}

app = Litestar(route_handlers=[hello_world])

启动命令:

litestar run

性能

Litestar 在性能测试中与其他 ASGI 框架持平或更快。具体数据可在官方文档的基准测试页面查看。

litestar run


**性能**

Litestar 在性能测试中与其他 ASGI 框架持平或更快。具体数据可在官方文档的基准测试页面查看。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐