Batch & Cost/Retry

Token 成本共享锁记账与 Rate Limit 避堵重试

解密 batch_runner.py 多线程成本锁同步与 Exponential Backoff 退避算法
重试避堵时序图
📊 图 12-2-1:批量并发接口报错捕捉、退避延迟计算与任务通道重试时序图

🔒 1. 线程安全的多线程记账成本锁 (self._lock)

在批量处理时,多线程会并行写入输入输出 Token 数以及计费统计。在 batch_runner.py 中,系统为多线程的累加计算配备了共享锁:

with self._lock:
    self.input_tokens += input_t
    self.output_tokens += output_t
    self.total_cost += cost

这保证了各任务即使在高并发状态下,其统计开销数据也是 bit-perfect 一致的。

并发计数器同步
📊 图 12-2-2:批量数据切片、线程池分配与任务通道并发限制结构图

⏳ 2. 接口限速与 Jitter 退避重试

当大模型服务器返回 Rate Limit Exceeded (429) 或 Broken pipe (32) 等网络读写错误时,批处理引擎会根据指数级退避公式,并加上一个随机抖动(Jitter)计算睡眠延迟并重试,成功规避了连续碰撞。