
授权与合规声明本文为技术实操分享所有示例均在自建隔离环境中验证或为可复现的演示代码文中版本、命令与数据均标注来源无法核验的已标「待验证」不含任何攻击步骤、利用载荷与绕过手法。转载请注明出处。一、批量调大模型为什么不能同步干给一批文档做摘要、给一万条工单打标签、给历史数据做抽取——这些「批量 LLM 任务」有个共同点量大、单条慢、可失败重试。1.1 同步处理的三个死穴阻塞一个接口里串行调模型前端等到超时后端线程被占满。无进度跑了一半崩了你不知道跑到哪、哪些成了哪些没成。无节制瞬间把所有请求砸向模型服务触发限流或直接打挂。1.2 正确姿势入队 消费把「要处理的条目」塞进消息队列用一组 Worker 异步消费每条独立重试、独立记进度。队列天然做了削峰填谷。二、整体架构2.1 四个角色Producer把批量任务拆成多条消息入队。Queue缓冲与削峰控制并发上限。Worker消费消息调大模型写回结果。Store存进度与最终结果供查询。2.2 为什么用队列而不是定时任务定时任务难做「失败单条重试」和「动态扩缩容」队列的「消费确认」机制天然适合「处理完才确认失败就重投」。三、一个最小可跑的 Worker 骨架下面用伪代码演示「消费 → 调模型 → 确认/重试」的核心循环。⚠️ 代码待验证importtimedefworker(queue,llm_call,store,sem_value5):Worker受信号量限流单条失败有限重试。active0whileTrue:msgqueue.pop(blockTrue)ifmsgisNone:breakforattemptinrange(3):try:resultllm_call(msg.payload)# 受外部限流的模型调用store.save(msg.id,result)queue.ack(msg)# 成功才确认breakexceptTransientError:wait2**attempt# 指数退避time.sleep(wait)else:queue.requeue(msg,delay60)# 三次失败转入死信/延后重试defproducer(items,queue):foritinitems:queue.push({id:it.id,payload:it.text})3.1 限流怎么做Worker 数量本身就限制了并发。若模型服务侧还有配额用令牌桶或信号量再控一层避免瞬时打满。3.2 重试与退避瞬时错误超时、限流值得重试且必须指数退避重复三次仍失败转入死信队列人工或定时补跑绝不原地死循环。四、进度与可观测4.1 进度从哪来每条消息处理完就更新 Store 里的状态pending/done/failed。外部用「done / total」就能算出进度前端轮询或推订阅都行。4.2 必须记的三类日志每条的处理时长与 token 消耗重试次数与触发原因死信队列的堆积量。死信堆积是「批量任务 silently 失败」的早期信号。五、生产落地的三个工程点5.1 幂等Worker 可能重复消费同一条重试、重投处理逻辑必须幂等同一id重复写入结果不冲突。用id做 upsert 是最省心的做法。5.2 背压模型服务慢时别无脑 pop 新消息。用「在途数量上限」做背压在途满就先不取防止内存与下游双爆。5.3 优雅退出发布或缩容时Worker 要处理完在途消息再退出别直接杀进程丢消息。队列的「未确认消息会自动重投」能兜底但优雅退出体验更好。配套资料这一章讲的幂等与背压设计我整理了一份「批量 LLM 任务可靠性清单」扫码即可获取六、常见坑6.1 非幂等导致重复写没用id去重重试一次就多一条脏数据。幂等是批量任务的底线。6.2 无退避的暴力重试失败立马重投等于对自己的模型服务做DoS越重试越崩。6.3 死信被遗忘失败任务默默堆在死信队列业务方以为「都跑完了」。死信必须有告警。七、上线检查单7.1 自查是否用队列做削峰而非同步处理是否每条独立重试且带退避是否保证处理幂等是否有进度查询与死信告警是否做了背压与优雅退出7.2 复盘指标盯「吞吐量条/分钟」「失败率」「死信堆积量」「平均单条耗时」四个数比「总耗时」更能定位瓶颈。配套资料文末资料包里有一份「批量 LLM 任务上线检查单」把上面七章逐项拆成可勾选项扫码即可获取附表 A本文引用事实与出处对照表事实/结论出处本文位置批量 LLM 任务需异步化以避免阻塞与无进度通用后端工程实践第一章消息队列的消费确认机制适合失败单条重试通用消息中间件实践第二章、第三章重试须指数退避且设上限失败转死信队列通用可靠性工程实践第三章、第六章批量处理必须保证幂等避免重试产生脏数据通用工程实践第五章、第六章附表 B术语速查表术语含义消息队列缓冲与削峰的异步通信组件死信队列多次失败消息的兜底存放处幂等同一操作重复执行结果一致背压下游慢时上游主动限取的机制写在最后这篇用到的资料写这篇文章时我把批量 LLM 任务的 Worker 骨架和可靠性清单整理成了资料顺手也整理了几份配套的东西Worker 骨架完整版含令牌桶限流与优雅退出可靠性清单幂等/退避/死信告警对照进度查询示例pending/done/failed 状态机资料是我自己整理的放在下面这个码上扫码即可获取资料较多建议先看「全套 AGI 大模型学习路线」再挑一个实战项目跟练。