
Python 后端的两种主流
| FastAPI | Django | |
|---|---|---|
| 风格 | 轻量 API 优先 | 全栈 batteries included |
| ORM | SQLAlchemy / Tortoise | Django ORM |
| 适用 | AI 服务、微 API | 管理后台、内容站 |
二者都能分层,别在 route/view 里写 SQL。

FastAPI 推荐结构
app/
├── api/ # routers,只做 HTTP
├── schemas/ # Pydantic 入出参
├── services/ # 业务用例
├── repositories/ # DB 访问
├── models/ # SQLAlchemy models
├── core/ # config, deps, security
└── main.py
依赖注入:Depends(get_db)、Depends(get_current_user),便于测试 mock。
Django 推荐结构
按 App 划领域,而非按技术层拆散:
blog/
├── posts/ # models, views, serializers, urls
├── users/
└── core/ # 共用工具、基类

复杂业务可引入 Service 层(posts/services.py),避免 fat views。
与 AI 项目结合
RAG / Agent 服务常见拆分:
ingestion:文档解析、切块、embedding;retrieval:向量检索 + rerank;agent:tool 循环;api:对外 SSE。
不要把 embedding 逻辑写在 router 里。
异步 Python
FastAPI 支持 async def,但注意:
- CPU 密集(解析大 PDF)→ 进程池 / Celery;
- IO 密集(HTTP 调 LLM)→ async 合适;
- SQLAlchemy 2.0 async session 与 sync 勿混用同请求。
小结
Python 架构图先画 router → service → repo,再选 FastAPI 或 Django。AI 功能当作 独立 service 模块,避免与 CRUD 耦合成一团。
参考:FastAPI/Django 官方最佳实践 · 作者 RAG 项目经验。