
Rust 异步编程与 Tokio 开发短记运营过程中怎样及时止损我还没有需要值守的线上服务所以把“及时止损”理解成练习项目里的小边界一个外部操作等太久时不要让后面的逻辑一直等下去。先给单次操作加超时再决定调用方该重试、提示失败还是暂时跳过这一步。use std::time::Duration; use tokio::time::{sleep, timeout}; async fn slow_step() { sleep(Duration::from_millis(20)).await; } #[tokio::test] async fn timeout_stops_waiting_for_the_step() { let result timeout(Duration::from_millis(1), slow_step()).await; assert!(result.is_err()); }超时不等于事情一定失败被等待的 future 停止等待后外部操作是否已经执行、能不能安全重试要按具体协议判断。这个例子也没有处理取消清理、并发上限或重试间隔它只练习一个最小的超时边界。如果我的小工具里有 AI 步骤我会把它当作一个可失败的外部依赖。输入只传完成当前任务所需的脱敏片段输出先校验格式超时或格式不对时返回普通的“未生成建议”不要让模型的文本直接触发命令。人工仍要检查建议是否符合上下文尤其是涉及文件修改时。排查卡住的问题时我会先打印任务开始、结束和超时三个事件日志里避免放完整输入、令牌或本机路径。等能稳定复现后再考虑加更细的 tracing。先看见问题再增加复杂度对现在的我更合适。