FastAPI 与执行方式:HTTP、同步和异步入门|学员任务书

课前预习 · 课堂课件 · 课后复习

项目任务与本人起点

任务:订单 HTTP 接口与商品详情多源等待。起点是本人 D02 数据库服务与回滚记录;保留本人代码,领取当天 student/W02-D03 增量后只合并新增文件,不用日包覆盖昨天实现。

当天新增或补写 commerce_ops/detail_query.py,保留 http_first_example/backend 与原 async_exercise.py 工程任务。D01 的 commerce_ops 是加入本人仓库的运营工具;之后每天继续同一个包。D05 不重复领取前四日答案,测试自己的实现。

支架与学生负责的部分

教师提供样本、接口签名、当日检查器以及既有 SQL/HTTP/容器支架。学生负责业务函数、边界处理和独立变化;完整教师实现不下发。命令在包含 commerce_ops 的本人项目根执行,现有实库和 HTTP 命令按各自 README 的工作目录运行。

python check_d03_python.py

首次有效红灯应来自 STUDENT_TODO。D04/D05 若缺前一日模块,应先合并本人已完成代码;ModuleNotFoundError、缺 pytest 或缺服务都不算教学红灯。测试依赖沿用当天工程 requirements 清单和 Python 3.12 环境。

输入、输出与不变规则

金额内部 Decimal、对外两位小数字符串。商品编号/客户编号沿用样本,不让客户端提供最终金额。新增产物:基础 API 和有超时清理的商品/配送聚合器。

文件工具操作本地课程样本,不自动写商城数据库;多源查询连接器的本地替身不等于真实物流。实库只用专用实验库;不要把 mock/Fake 的通过写成 MySQL、Linux、Docker 或远端 CI 已通过。

分段任务

  1. 回归本人起点,标出输入、计算/状态变化和输出;保留修改前版本。
  2. 先运行课件的最小例,解释 HTTP/FastAPI/Pydantic 合同;async def/await、协程与 Task、gather、timeout、cancel/finally、同步阻塞边界 在当天任务里解决什么问题。
  3. 补当日 TODO;检查器转绿后,把功能保留在本人累计项目中。逐段修改,不让 AI 一次生成整套工程。
  4. 运行这些情况并比较预期与实际:正常商品/配送结果;两任务活动峰值;慢配送超时;商品失败取消同伴;真实 API 的 201/404/409/422。
  5. 查看 AI 修改差异,至少指出一处接受或拒绝的理由。重点防止:连续 await 误称并发;gather 一项失败后遗留任务;吞取消;同步数据库阻塞事件循环。
  6. 同伴更换一组未见输入或一个故障点,作者先预测、再独立运行和解释;同伴按 README 复现,不靠作者代敲。

提交与验收

  • 当日本人代码、运行命令、固定提交及与昨天的修改差异。
  • 正常、失败、边界和修复后回归的输入与原始结果;具体运行项见上方第 4 步。
  • 口述一个知识点为什么需要、在商城哪里用,以及一处不能由当前测试证明的结论。
  • 原 SQL/事务/API/容器/CI 任务继续按真实环境验收;未运行项填写待验证。

只贴绿色截图、复制完成版、吞失败后伪造成功,不能通过。

课堂范围与后续

HTTP 首部大全与 TCP 握手长篇保留查阅,不逐项主讲;内存 HTTP 小例只验证路径,随后复用现成模型/错误适配支架接数据库。不上异步数据库迁移。

D04 保留同一版 API 与运营模块,在 Linux/容器中重建运行条件。尚未完成的本日核心必须补验,不能默认用课后新增学时替代课堂容量。