限流发生时,先别重试,也先别清空任务。把已经返回并落盘的那部分结果冻结成一份只读快照,再判断缺口是“可补齐”还是“必须重跑”。能保住多少,取决于你的中间结果是否带时间戳、请求参数和状态标记;如果这三样都没有,先补记录,再谈继续调用。
限流通常表现为返回码变化、响应变慢或直接拒绝,但它不区分“任务失败”和“任务被暂停”。此时最危险的动作是清空队列重新开始,因为新请求大概率继续被拒,而旧结果会被覆盖。
以你手里的一个导出文件为例,按下面顺序处理:
这个动作的结果是:你得到一份边界清晰的存量数据。它决定了下一步是“补缺口”还是“降级使用”,而不是凭感觉决定要不要重跑。
不是所有缺口都值得再发请求。可以用一个假设例子来比较:假设你有 500 条目标记录,已成功返回 320 条,其中 40 条字段不全。
这里要说明一个不能推出的结论:返回量归零或明显下降,不能单独证明你的脚本写错了,也不能证明对方封了你的账号。它同样可能来自配额周期重置、共享出口被其他任务占用,或对方临时调整了策略。缺少完整数据和权限时,你无法区分这些原因,只能先按“不可控”处理。
在没有完整权限、拿不到后台配额说明的情况下,最小动作不是继续压请求,而是做一次受控试探。具体做法:
试探结果会影响下一步:如果小批量能稳定返回,说明限流可能是频率触发,可以按更低速率分批补;如果仍然被拒,就停止补跑,转为向数据使用方说明存量覆盖范围。这一步的价值在于用最小代价换一个明确信号,而不是把全部缺口再赌一次。
保护已有结果的最后一步,是让它即使不完整也能被使用。对那份只读副本,补一段说明:数据覆盖的时间段、成功条数、缺失条数、缺失是否集中在某类参数、以及本次限流发生的大致时点。
这样做的结果是,下游拿到的不只是一份残缺文件,而是一份带边界的资料。它可以支撑“这部分结论可用、那部分待补”的判断,而不是被迫整体废弃。若后续权限恢复,再按同一套记录格式追加,新旧数据也能对齐。
需要核对具体工具时,配额规则、调用频率上限和恢复方式都可能随版本变化,应以该工具当前的官方说明为准,不要沿用旧经验。