遇到限流时,先停止继续调用,把已经拿到的响应、任务进度和失败清单分别落盘,再决定是等待重试还是改用低频人工路径。保护已有结果的关键不是“绕过限流”,而是让未完成部分可续跑、已完成部分不被覆盖,并且知道当前结果能支持什么结论、不能支持什么结论。
两种情况的处理方式不同,选择依据是响应特征和调用上下文。
可区分的原因证据包括:失败是否集中在特定接口、是否与调用频率同步出现、同一凭证换低频率后是否恢复。如果换低频仍失败,更可能是权限边界;如果低频后恢复,更可能是容量问题。需要注意,调用量归零或抓取量下降本身不能单独证明处理正确,也可能是任务已跑完、脚本提前退出或上游数据源变化。
如果限流是间歇性的,目标是让已有结果可续跑,而不是从头重来。
这个动作的结果会影响下一步:如果小批验证通过,可以按更低频率继续;如果仍然失败,应停止续跑,转入只保护已有结果的路径。
如果限流已经稳定阻断调用,继续尝试只会增加失败记录,不会增加有效数据。此时应执行最小动作:
假设一个场景:脚本计划抓取一千条记录,限流前完成三百条。此时可以说明这三百条的内部特征,但不能直接推断剩余七百条一定相同。这个例子只用于说明比较方法,不代表真实项目结果。
第一,覆盖写入。续跑时如果直接写同一个文件,可能把已成功的结果覆盖成空或旧值。第二,缺少失败清单。只记录成功项会导致续跑时重复调用已完成部分,进一步触发限流。第三,把部分结果当完整结果使用。缺少完整数据或权限时,仍可执行的最小动作是保存、标记和暂停结论,不能推出全量结论。
具体工具的重试机制、配额说明和导出入口需要以该工具当前文档为准,不同工具差异较大,不宜直接套用。对未知工具,按上述通用评估方法处理即可。
恢复调用的前提是:失败原因已明确为临时容量问题,且低频验证通过。换路径的前提是:失败原因指向权限或配额边界,或低频验证仍失败。无论哪种情况,已有结果的保护动作都应先于重试动作。下一步是续跑还是换路径,取决于小批验证结果和失败清单的变化,而不是取决于已经等待了多久。