1.0 KiB
1.0 KiB
title, type, permalink, stable_id, scope, project_id, memory_type, status, revision, restored_from_commit, created_at, updated_at, tags
| title | type | permalink | stable_id | scope | project_id | memory_type | status | revision | restored_from_commit | created_at | updated_at | tags | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 坑:FastAPI async def 里阻塞 I/O 冻结事件循环 | experience | main/projects/d5a7f581-c442-4554-87b9-ee723b8b0258/坑-fast-api-async-def-里阻塞-i-o-冻结事件循环 | df065dbf-85de-4f2b-bbb1-5d8b115de08c | project | d5a7f581-c442-4554-87b9-ee723b8b0258 | experience | active | 1 | 6a6a895eaf |
2026-09-23T15:09:57.195425+00:00 | 2026-09-23T15:09:57.195491+00:00 |
|
CapacityReport 大表导出把 /health 都卡死:async def 处理函数里直接调 pymysql/大文件/轮询等阻塞 I/O,事件循环被占满。修复:把这类处理函数改成普通 def,FastAPI 自动扔进线程池。通用经验:同步库(pymysql、paramiko、requests)的调用链不要包在 async def 接口里;另外重建线程池时旧池用 shutdown(wait=False) 非阻塞关闭(database/jobs.py、scripts/runs.py 的 _pool 模式)。