继续熟悉github-copilot对系统架构进行优化;async的深入理解;
1.继续熟悉github-copilot对系统架构进行优化;
👉对所有线程池改成 async 看起来是个好主意;
👉系统本身就是需要大量处理文件,async 看起来是个好主意;
1️⃣ I/O 密集型:非常适合 async
2️⃣高并发下 async 会明显更稳、更省资源
👉虽然将系统内所有非异步方法改为了异步,但github-copilot发现pypdf.PdfReader仍然是同步操作,
1️⃣循环会被卡住
2️⃣所有请求一起“假死”
2.async的深入理解;
异步不是系统属性,而是“边界属性”
👉 只有“等待别人”的地方,才值得 async
| 位置 | 是否 async | 原因 |
|---|---|---|
| HTTP / RPC | ✅ 必须 | I/O 等待 |
| DB / Redis | ✅ | 网络 |
| LLM / Ollama | ✅ | 远程调用 |
| 文件上传 / 下载 | ✅ | I/O |
| PDF / OCR | ❌(用 to_thread) | 阻塞 |
| 业务逻辑 | ❌ | 无等待 |
| 算法 / 处理 | ❌ | CPU |
| domain model | ❌ | 可测试性 |
👉一句以上建议与理解,我让github-copilot
合理化整个项目的同步与异步方法。HTTP、Ollama、LLM、文件上传与下载都为异步(还有一点,调用了异步方法的方法,都是异步方法)。
PDF页数解析改为线程池。业务逻辑,算法 / 处理、domain model都为同步方法。
经过github-copilot检查,整个系统都是依照以上规则进行的;
浙公网安备 33010602011771号