Q:SSE 流式输出中断后如何保证之前的输出不丢失?
来源:某教育agent开发
新手答:”断了就重新生成呗。”
高手答:
SSE 流式断连是 Agent 应用的常见问题(用户关闭浏览器、网络波动等),解决方案分层:
- 服务端持久化:每个 SSE 事件带递增 event_id,服务端将已发送内容写入 Redis/DB(key = task_id)
- 断点续传:客户端重连时携带 Last-Event-ID,服务端从该位置继续推送
- 异步任务分离:将 LLM 生成与 SSE 推送解耦——生成结果写入消息队列,SSE 连接只负责消费和推送。即使连接断开,生成不中断
- 轮询兜底:如果 SSE 重连失败,降级为轮询接口拉取 task_id 对应的已生成内容
- 前端状态恢复:客户端本地缓存已收到的 chunk,重连后只接收增量
差距在哪:关键是”生成过程和推送过程解耦”的架构思想,不要让连接状态影响计算状态。