本文介绍一种健壮的断点续传机制:当调用 api 过程中因 token 失效中断时,自动记录最后失败的 clientid,并在下次运行时从此处继续迭代,避免重复请求和数据丢失。
在批量处理 JSON 数据并逐个调用外部 API 的场景中(如按 ClientId 查询客户信息),Token 有效期限制常导致任务中途失败。若每次失败后都从头重跑,不仅浪费资源、延长执行时间,还可能引发接口限流或数据重复写入等问题。理想的解决方案是实现可持久化状态的断点续传——即准确记住上一次中断的位置,并精准恢复。
核心设计思路
我们不依赖内存中的索引变量(易丢失),而是采用外部状态文件(如 last_failed.txt)持久化记录最后一次失败的 ClientId。程序启动时优先检查该文件:
- 若文件不存在 → 从第一个 Client 开始遍历;
- 若文件存在 → 从文件中记录的 ClientId 开始(含) 继续遍历,跳过此前已成功处理的部分。
该策略的关键在于:“从指定 ClientId 恢复” ≠ “跳过该 Client”,而是包含它——因为上一次正是在此 Client 触发了 Token 过期,需重新尝试该请求。