第一次:给了 30 秒超时,跑数据库查询经常超。改成 120 秒,结果一次卡死把整个会话拖住。
第二次:只设总超时,没有中间反馈。用户看不到进度,以为挂了。
第三次才成型,三层设计:
- 单次调用超时 30 秒,但支持流式返回进度(长任务每 5 秒吐一行心跳)
- 总任务超时 10 分钟,到点强制中止并返回已完成部分
- 中止后可恢复:把已完成的分片和剩余任务落盘,下次接着跑
第三层最关键。批量处理 500 个文件,跑到 380 个被掐,没有断点续跑就得从头来。
另一个细节:超时时间不要写死在代码里,放配置。不同的工具差异太大,查本地文件 3 秒够,调外部 API 要 60 秒。
主楼- 暂无回复
继续逛逛