如果脚本在限流前已经把部分结果落盘,而且落盘内容带有可识别的批次标记,那么已有结果通常可以保留并继续校验;但如果结果只存在于内存、进程退出即丢失,或者接口返回的“成功”实际上只是排队回执,那么保留动作就必须重新设计。下面先给出可执行的最小动作,再说明反例和下一步。
限流发生时,最容易误判的是结果的存在形态。可以按三个位置排查:
一个可执行的最小动作是:先冻结当前批次,不再发起新请求,把已落盘文件复制一份并记录其行数、时间范围和字段完整度。这个动作的结果决定下一步——如果字段完整度足够,就直接进入校验;如果关键字段缺失,就先补跑缺失维度,而不是重跑全部。
限流不是单一状态,处理方式取决于你更怕丢数据还是更怕污染数据。
batch_status=partial,后续分析时单独过滤。代价是报表口径会变窄,不能直接和完整批次比较。选择哪一个,取决于一个可验证的条件:限流发生前已完成的请求是否覆盖了主要维度。如果覆盖了,保留并标记通常成立;如果只完成了少量随机请求,隔离或重跑更稳妥。
假设脚本把每次响应原样写入文件,限流后文件有几千行,看起来“保住了”。但如果响应内容是错误页、验证页或空结果,那么这些行只是请求记录,不是有效数据。此时继续基于它做统计,会得到偏低或偏高的结论,而且很难事后发现。
反例的识别方法是抽查字段:有效结果通常有稳定的业务字段和值域;错误页往往字段缺失、状态码异常或正文长度极短。抽查不需要完整数据权限,只要能看到已落盘文件即可。若抽查发现错误页占比高,那么“已有结果可保留”这个结论就不成立,应转为隔离并补跑。
没有后台权限、看不到全量日志时,仍然可以做几件不依赖权限的事:
这些动作只能说明“当前这批数据能支持什么判断”,不能推出“整体结果已经完整”或“限流没有影响”。请求量归零、抓取量下降或某接口报错,也可能来自参数错误、目标站点变更或网络中断,不能单独作为限流结论。
完成抽查后,下一步不是立刻重跑全部,而是按缺口补跑:只请求缺失的参数区间或时间窗口,并把新结果标记为补跑批次。补跑完成后,比较补跑批次与原有批次的字段分布;如果两者接近,再合并;如果差异明显,就保留两份并说明各自适用范围。这样既保护了已有结果,也避免把受干扰的数据当成完整结论使用。