先给结论:限流发生后,不要立刻重跑整批任务,也不要马上删除已有结果。正确顺序是先把已成功返回的数据落盘并标记完成状态,再判断限流属于短时并发过高、配额用尽还是接口策略变化。只有前一种适合改写调用节奏后继续,后两种更适合保留结果并退出,等条件恢复再补跑。
限流提示本身信息有限,需要结合调用日志区分原因。常见可观察证据包括:单位时间内请求数突然升高、响应中出现明确的配额或频率说明、同一批任务中前几十条成功而后续集中失败、以及更换调用间隔后成功率是否恢复。
这里的关键动作是:把每次调用的时间、参数摘要、返回状态和是否已写入结果记录下来。这个动作的结果决定了下一步——如果失败集中在某个时间窗口,改写节奏有意义;如果失败从某一批开始持续出现,保留并退出更稳妥。
限流期间最怕的不是少抓了几条,而是把已经拿到的结果覆盖或混入失败占位。保留不是简单留着文件,而是让后续补跑能准确接上。
做完这三步,即使当天不再调用,已有结果仍然可用;之后补跑时只处理失败清单,而不是重跑全部任务。这个动作直接影响成本:重跑全量会再次触发限流,只补失败项则更容易控制在配额内。
改写节奏适合限流由并发或瞬时频率引起的情况。可调整的通常是并发数、请求间隔、单批任务量和重试等待时间。调整时不要一次改多个变量,否则无法判断哪个生效。
假设一个场景:某批任务共 200 条,前 80 条成功,之后集中返回限流。此时可以把剩余任务拆成每批 20 条,批次之间等待一段时间,并只对失败项重试一次。若重试后成功率明显恢复,说明是节奏问题;若仍然集中失败,应停止继续消耗,转为退出。
代价也要算清楚:降低并发会拉长整体耗时,拆分批次会增加人工或脚本调度成本。如果任务本身有明确截止时间,而限流又无法在短时间内缓解,继续改写节奏可能不如保留结果、改为分批次日补跑。
退出不是放弃,而是停止在当前条件下继续消耗。出现以下情况时,退出比继续改写更合理:配额类提示明确、连续多批全部失败、更换间隔后仍无改善、或返回内容表明当前调用方式已不被接受。
退出前要完成交接:保存成功结果、保存失败清单、记录最后一次成功调用的参数和时间。下一步动作取决于这些记录——如果是配额问题,等配额恢复后只补失败项;如果是调用方式变化,先核对当前可用说明,再决定是否调整脚本,而不是直接重跑。
需要提醒的是,请求量归零或失败率突然升高,并不能单独证明是限流,也可能是网络中断、目标站点不可达或脚本自身异常。因此退出前至少要排除这几类原因,避免把普通故障误判为限流而白白等待。
综合来看,可以按这个顺序处理:先落盘并标记已有结果;再用小批量试探判断限流类型;若短时节奏问题,则改写并发和间隔后只补失败项;若配额或策略问题,则保留结果并退出,等条件明确后再继续。每一步的结果都决定下一步,而不是一开始就重跑全量或直接放弃。