docs: phase-2 100% async completion stats and verification
This commit is contained in:
+19
-1
@@ -83,18 +83,36 @@ BACKEND_URL=http://127.0.0.1:8000 pnpm dev # http://localhost:5173
|
||||
|
||||
## 异步化转换统计
|
||||
|
||||
### Phase 1:视图层全异步(ADRF 事件循环)
|
||||
- 覆盖 16 个应用、45 个视图文件:`api` `user` `article` `learn` `chat` `message` `history` `search` `bug` `tool` `weather` `air_quality` `currency` `shorturl` `logs` `apidirectory` `app`
|
||||
- 处理器全部 `async def`(约 90+ 个);ORM 调用全部异步化
|
||||
- 兜底点(`sync_to_async`):serializer is_valid/save/data、Redis cache、SMTP/邮件任务、密码哈希、文件存储 I/O、`transaction.atomic` 事务段、Celery `.delay`
|
||||
- 转换规范见 `chunyu_project/docs/ADRF_CONVERSION_GUIDE.md`
|
||||
|
||||
### Phase 2:serializer 层原生异步(100% 异步化收口)
|
||||
- **10 个 serializer 文件**全部迁移至 `adrf.serializers`(原生异步 ModelSerializer/Serializer):
|
||||
`article` `learn` `bug` `chat` `message` `history` `tool` `apidirectory` `user/serializers/user_serializers` `user/serializers/region_serializers`
|
||||
- 全部 `SerializerMethodField` 的 getter 改为 `async def` + 异步 ORM(含嵌套外键改 id 访问/`select_related` 消懒加载)
|
||||
- 写路径 `create/update` → `acreate/aupdate`,视图统一 `await serializer.asave(**kwargs)`(adrf 原生,kwargs 合入 validated_data)
|
||||
- 序列化输出统一 `await serializer.adata`(替代同步 `.data` 与 `sync_to_async` 兜底)
|
||||
- **async_cache 基建**(`utils/async_cache.py`):`redis.asyncio` 直连 + msgpack 序列化 + 同步缓存降级,验证码/缓存场景(注册/登录/改密/邮箱/手机号/IP 定位)全部切换
|
||||
- 外键懒加载治理:黑名单列表 `select_related('blocked_user')`、聊天消息 `select_related('sender')`、评论父作者异步加载等
|
||||
|
||||
### 终态核验(服务器实跑 grep)
|
||||
- serializer 层裸同步 ORM getter:**0**
|
||||
- 视图层 `serializer.data` 同步残留:**0**
|
||||
- `sync_to_async(serializer…)` 残留:仅 8 处 `is_valid`(**设计边界**:Django validate 钩子同步调用,且 user 系列校验器含 DB 查询/argon2 哈希)+ 已清零的 save
|
||||
- `async def` 总量:**310+**
|
||||
- 剩余 `sync_to_async`(约 160 处)全部为**无异步 API 的库**:SMTP/Celery `.delay`/密码哈希/文件存储/DRF 分页器求值/`transaction.atomic` 事务段(Django 5.2 限制,行锁语义必须同步闭包)
|
||||
|
||||
## 验证记录
|
||||
|
||||
- ✅ `python manage.py check` 0 错误
|
||||
- ✅ URLCONF 全量导入成功(所有视图模块可加载)
|
||||
- ✅ 205 个 py 文件 py_compile 0 失败
|
||||
- ✅ Granian 启动 + 冒烟:`/`、`/article/articles/`、`/learn/courses/`、`/api/apidirectory/categories/`、`/api/weather/?city=Beijing`、`/api/air-quality/?city=Shanghai`、`/api/currency/rates/?base=USD`、`/api/image-captcha/`、`/api/captcha/generate/`、`/swagger.json`(331KB) 全部 200
|
||||
- ✅ `docker compose config` 校验通过
|
||||
- ✅ Nginx 配置语法 `nginx -t` 通过
|
||||
- ✅ Phase-2 服务器回归:7/9 端点组全绿、写路径(短链/评论)异步落库、并发 240/240
|
||||
|
||||
## 服务器部署(192.168.5.7 生产/联调环境)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user