How FastAPI Works

FastAPI 的工作原理: 从 routing 到 lifecycle 以及在现实中的使用 FastAPI FastAPI 是一个现代的 Python Web 框架, 注重高性能和开发效率. 旨在帮助开发者编写结构清晰、可靠的API, 同时尽量减少样板代码 (boilerplate) 其由以下两个库驱动: Starlette: 负责 Web 服务器逻辑、路由、中间件和异步能力 Pydantic: 基于 Python 类型提示, 处理数据验证、解析和序列化 此外, Fastapi 还有输入验证、基于 Swagger UI 的自动文档生成和代码清晰化的基础 API 请求周期 Fastapi 的请求生命周期如下 客户端请求 (Client Request) ↓ FastAPI App ↓ 中间件(Middleware) ↓ 路由匹配 (Route Matching) ↓ 依赖注入(Dependency Injection) ↓ 输入验证 (Input Validation) ↓ 端点函数 (Endpoint) ↓ 响应序列化 (Response Serialization) ↓ 客户端响应 (Client Response) 请求首先进入 FastAPI 应用 (本质就是一个 Starlette 应用) 所有中间件优先执行 (如: 日志、错误处理、CORS等) 路由器检查路径和方法, 找到对应的处理函数 FastAPI 使用Depends解析依赖 使用 Pydantic 自动解析并验证输入数据 执行端点函数, 参数验证完毕 返回结果被序列化为合适的响应格式 (JSON) 响应返回给客户端 路由 Router 在应用对象上定义 适合小项目或原型验证 ...

August 3, 2025 · 2 min · 322 words · Starslayerx

Dive into DeepLearning - 02 - Preliminaries

Course Note: d2l-video-05 - 线性代数 Jupyter Notebook: chapter_preliminaries/linear-algebra.ipynb 预备知识中 Liner Algebra 的部分 线性代数 Scalars 标量: 指只有一个元素的张量 tensors import torch x = torch.tensor(3.0) # scalar y = torch.tensor(2.0) Vectors 向量: 可以视作标量构成的列表 x = torch.arange(4) x[3] # 通过张量索引访问任一元素 len(x) # 访问张量长度 x.shape # torch.Size([4]) 只有一个轴的张量, 形状只有一个元素 Matrices 矩阵: 类似向量的推广, 可以构建更多轴的数据结构 # 构建矩阵 A = torch.arange(20).reshape(5, 4) A.T # 转置 # 对称矩阵 B = torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]]) B = B.T 形状相同张量的计算 A = torch.arange(20, dtype=torch.float32).reshape(5, 4) B = A.clone() A, A + B A * B # 对应元素相乘: Hadamard 积 计算元素的和 x = torch.arange(4, detype=torch.float64) x.sum() # 任意形状张量的和 计算平均值 A.mean() # 均值 A.sum() / A.numel() # 另一种计算均值的方法: 和 / 数量 点乘是相同位置元素乘积的和 ...

March 21, 2021 · 2 min · 307 words · Starslayerx

Dive into DeepLearning - 01 - Preliminaries

Course Note: d2l-video-04 - 数据操作+数据预处理 Jupyter Notebook: chapter_preliminaries/pandas.ipynb 预备知识中 Data Manipulation 和 Data Preprocessing 的部分 介绍 N 纬数组介绍 0-d (标量) 1.0 一个类别 1-d (向量) [1.0, 2.7, 3.4] 一个特征向量 2-d (矩阵) [[1.0, 2.7, 3.4], [1.0, 2.7, 3.4], [1.0, 2.7, 3.4]] 一个样本 - 特征矩阵 3-d RGB 图片(宽 x 高 x 通道) [[[1.0, 2.7, 3.4], [1.0, 2.7, 3.4], [1.0, 2.7, 3.4]], [[1.0, 2.7, 3.4], [1.0, 2.7, 3.4], [1.0, 2.7, 3.4]]] 4-d 一个 RGB 图片批量 (批量大小 x 宽 x 高 x 通道) ...

March 21, 2021 · 3 min · 566 words · Starslayerx