issue: “Not enough data to satisfy transfer length header.” error interrupts responses

该报错通常出现在 Open WebUI 对流式响应进行解析时,aiohttp 提前中断连接导致。优先排查 Open WebUI 版本:已知 v0.9.6、v0.11 等版本存在此问题,降级到 v0.9.5 可临时规避(注意该版本未验证上游兼容性)。 核心英文报错: Not enough data t

快速结论:该报错通常出现在 Open WebUI 对流式响应进行解析时,aiohttp 提前中断连接导致。优先排查 Open WebUI 版本:已知 v0.9.6、v0.11 等版本存在此问题,降级到 v0.9.5 可临时规避(注意该版本未验证上游兼容性)。
核心英文报错:Not enough data to satisfy transfer length header.Response payload is not completed: <TransferEncodingError: 400, message='Not enough data to satisfy transfer length header.'>

适用环境:Open WebUI v0.9.5(问题出现),v0.9.6 及 v0.11 版本也确认触发;操作系统为 macOS Sonoma;Docker 部署;浏览器为 Zen Browser(Firefox 150.0.2 aarch64);上游模型包括 GLM-5.1(Z.ai 兼容 OpenAI 端点)和自托管 Ollama。

最快修复方案:尝试将 Open WebUI 降级至 v0.9.5(已知在部分场景下可规避该错误)。如果降级不可行,可检查是否由某个特定版本引入,并关注 Open WebUI 后续更新。

注意事项:降级可能涉及数据库迁移回退风险(v0.9.3 引入了破坏性迁移),建议在测试实例上操作。设置 AIOHTTP_CLIENT_TIMEOUT 环境变量(无论设为较大值还是空字符串)在已报告问题中无效,不推荐作为修复手段。

问题场景

用户在 Open WebUI 中发起流式对话请求,使用自定义 Agent(基于 GLM-5.1 的 OpenAI 兼容接口)或自托管 Ollama 模型,响应生成一段时间后(通常约 30 秒或数万 tokens 上下文后)被中断,前端显示错误。问题在 v0.9.3、v0.9.4、v0.9.5、v0.9.6 及 v0.11 版本中均被观察到。

报错原文

Response payload is not completed: <TransferEncodingError: 400, message='Not enough data to satisfy transfer length header.'>

后端日志同时出现:

ERROR    | open_webui.main:process_chat:2013 - Error processing chat payload: Response payload is not completed: <TransferEncodingError: 400, message='Not enough data to satisfy transfer length header.'>

原因分析

该错误源于 Python HTTP 库 aiohttp。Open WebUI 在流式接收上游响应时,aiohttp 客户端在约 30 秒后提前断开连接(即使已设置超时),导致收到的响应体不完整,触发传输长度校验失败。用户发现下游(Ollama 或第三方提供商)并未报错,因此问题出在 Open WebUI 的 aiohttp 客户端处理逻辑或版本兼容性上。版本回退验证指向 Open WebUI 自身在 v0.9.6 及后续版本中引入了此回归。

环境排查

  • 确认 Open WebUI 版本(重点关注 v0.9.5、v0.9.6 及 v0.11)。
  • 确认部署方式(Docker 或本地运行)。
  • 检查上游模型端点(Ollama 或第三方 OpenAI 兼容接口)是否正常工作,可用其他客户端(如 curl 或 Python 脚本)测试同一请求是否稳定流式输出。
  • 检查环境变量 AIOHTTP_CLIENT_TIMEOUT 是否被设置(但已知无效)。
  • 查看容器日志中的连接断开时间戳,是否稳定在约 30 秒。

解决步骤

  1. 降级 Open WebUI:将当前版本回退至 v0.9.5(已知无此问题的最后一个版本之一)。注意备份数据库,避免因迁移不兼容丢失数据。
  2. 若需保留高版本:尝试以下选项(均为推测,未在 Issue 中验证):
    • 升级至最新发布版本,查看是否已被修复。
    • 在 Open WebUI 的 Docker 启动命令中增加 --env AIOHTTP_CLIENT_TIMEOUT=(设为空字符串)或较大数值(如 600),但根据 Issue 报告这很可能无效。
    • 如使用 Ollama 本地模型,可尝试在 Ollama 侧启用 --keep-alive 长保持连接参数,但本质上无法绕过 Open WebUI 端的断连问题。
  3. 跟踪上游修复:关注 Open WebUI GitHub 仓库中 #24559 及其关联 Issue #12021#13474,等待官方修复。

验证方法

执行降级后,重新发起导致报错的相同对话(包括多轮工具调用和大量上下文),观察是否完整输出不再中断。检查 UI 错误提示消失,后端日志不再出现 TransferEncodingError

参考来源

open-webui/open-webui #24559

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15448

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注