Rust 异步编程与 Tokio 运行时:把一次排查写成可复用规则

📅 2026/8/11 19:58:27
Rust 异步编程与 Tokio 运行时:把一次排查写成可复用规则
Rust 异步编程与 Tokio 运行时把一次排查写成可复用规则我学 Tokio 时经常是某段代码卡住了才发现自己在 async 函数里做了阻塞操作。一次排查结论不一定适合所有项目所以我会先把当时的条件、证据和替代方案写成短笔记再决定是否把它做成检查规则。例如“不要在 async 任务里直接调用std::thread::sleep”很适合成为项目约定但也要说明例外如果这段代码运行在专门的阻塞线程中判断方式会不同。规则的目的不是让 CI 显得严格而是让后来的人知道为什么这么写。graph LR Note[一次可复现的问题] -- Adr[记录背景和取舍] Adr -- Check[添加小范围检查] Check -- CI[在 CI 中提示或拦截] CI -- Review[人工确认例外]fn looks_like_blocking_async(code: str) - bool { code.contains(async fn) code.contains(std::thread::sleep) } #[test] fn flags_one_known_pattern() { assert!(looks_like_blocking_async( async fn work() { std::thread::sleep(Default::default()); } )); }我不会把这种字符串检查当成真正的静态分析它只能抓一个已知模式。遇到性能或阻塞问题仍要用 tracing、指标和最小复现判断。复盘记录也只保留必要的技术事实删除用户输入、内部地址和凭据后再共享。