python之Starlette

一、Starlette 是什么?

Starlette 是一个轻量级、高性能、异步优先的 Python Web 框架,专为构建异步 Web 应用和 API 设计。它不是 Django 那种大而全的框架,而是专注于提供核心的 Web 功能(路由、请求/响应处理、WebSocket、中间件等),设计理念是"模块化、可扩展、无冗余",常被称为"异步版的 Flask",也是 FastAPI 的核心底层依赖(FastAPI 基于 Starlette 构建,补充了 OpenAPI 文档、数据校验等功能)。

核心定位:

  • 异步优先:基于 Python 3.7+ 的 async/await 语法,原生支持异步 I/O,性能远优于传统同步框架。
  • 轻量灵活:无强制依赖(仅依赖 anyio 处理异步事件循环),可按需搭配其他库(如 ORM、模板引擎)。
  • 功能完备:覆盖 Web 开发的核心场景(REST API、WebSocket、后台任务、测试工具等)。

二、核心特性(新手易懂版)

  1. 基础 Web 功能
    • 路由系统:支持路径参数、正则匹配、路由分组,写法简洁。
    • 请求/响应处理:原生支持 JSON、表单、文件上传,响应可返回字符串、JSON、流数据等。
    • 中间件:内置常用中间件(CORS、会话、日志、异常处理),也可自定义。
  2. 异步能力
    • 原生支持 async def 定义视图函数,完美适配异步数据库(如 asyncpg)、异步 HTTP 客户端(如 httpx)。
    • 支持 WebSocket 双向通信(异步),适合实时应用(如聊天、通知)。
  3. 实用工具
    • 后台任务:无需额外依赖即可实现异步后台任务(如发送邮件、数据处理)。
    • 测试客户端:内置 TestClient,可直接模拟请求测试接口,无需启动服务器。
    • 依赖注入:轻量的依赖系统,便于解耦和复用逻辑(FastAPI 在此基础上强化了这一功能)。
  4. 高性能
    • 基于 ASGI(异步服务器网关接口),可搭配 Uvicorn、Hypercorn 等 ASGI 服务器运行,性能接近 Node.js 和 Go 编写的 Web 服务。

三、快速上手(极简示例)

1. 安装

首先安装 Starlette 和 ASGI 服务器(以 Uvicorn 为例):

bash 复制代码
pip install starlette uvicorn
2. 最小化应用

创建 main.py:

python 复制代码
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route

# 异步视图函数
async def homepage(request):
    # 获取请求参数(示例:query参数)
    name = request.query_params.get("name", "Guest")
    return JSONResponse({"message": f"Hello, {name}!"})

# 定义路由
routes = [
    Route("/", endpoint=homepage, methods=["GET"]),
]

# 创建应用实例
app = Starlette(debug=True, routes=routes)
3. 运行应用
bash 复制代码
uvicorn main:app --reload

访问 http://127.0.0.1:8000?name=Python,会返回:

json 复制代码
{"message": "Hello, Python!"}

四、Starlette 的适用场景

  • 构建高性能的异步 API 服务;
  • 开发实时应用(WebSocket、Server-Sent Events);
  • 作为底层框架扩展(如 FastAPI 基于它构建);
  • 小型/中型项目(无需 Django 全家桶的场景)。

五、与其他框架的对比

框架 定位 核心优势 适合场景
Starlette 轻量异步 Web 框架 高性能、灵活、异步优先 异步 API、实时应用
FastAPI 基于 Starlette 的 API 框架 自动生成 OpenAPI 文档、数据校验 标准化 REST API 开发
Flask 同步轻量框架 生态丰富、学习成本低 小型同步应用、快速原型
Django 全栈同步框架 大而全、内置 admin/ORM 复杂全栈应用、快速开发

总结

  1. Starlette 是异步优先、轻量高性能的 Python Web 框架,基于 ASGI 标准,核心功能聚焦且无冗余;
  2. 它的优势是异步能力强、灵活易扩展,是构建异步 API 和实时应用的优选;
  3. FastAPI 基于 Starlette 构建,补充了 API 文档、数据校验等功能,若需标准化 API 可优先选 FastAPI,若需极致灵活则选 Starlette。
相关推荐
benchmark_cc21 分钟前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读33 分钟前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放1 小时前
Python基础语法练习题(73)
java·前端·python
锋行天下1 小时前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐2 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹2 小时前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi
cpolar技术支持2 小时前
网关加 gzip,同时开启 chunked,下载回来的包解不开:把两层编码的解压顺序与长度核对做成只读页
python·http·网络编程·socket·内网穿透
小嘉丶学长2 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
迪菲赫尔曼2 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
用户8356290780512 小时前
Python 调整 Excel 工作表显示设置
后端·python