issue: streaming transmission cannot be stopped when using redis

用户在 Docker 环境下运行 Open WebUI 0.10.2 版本,后端模型通过 Ollama 服务(或其他 LLM 后端)提供流式推理能力。用户在前端发起对话请求,模型开始流式输出 token,用户点击“停止”按钮期望中断生成,但实际流式传输无法停止,生成持续到模型主动完成。该问题仅在系统

issue: streaming transmission cannot be stopped when using redis

issue: streaming transmission cannot be stopped when using redis

快速结论:该报错出现在 Open WebUI 配置了 Redis 作为消息队列的场景下,用户在前端点击“停止”按钮后无法中断模型流式生成。优先排查 Redis 是否作为默认后端(如 Celery/Redis 消息代理)启用了异步任务队列,以及停止信号是否被 Redis 正确传递到后端生成进程。

问题场景

用户在 Docker 环境下运行 Open WebUI 0.10.2 版本,后端模型通过 Ollama 服务(或其他 LLM 后端)提供流式推理能力。用户在前端发起对话请求,模型开始流式输出 token,用户点击“停止”按钮期望中断生成,但实际流式传输无法停止,生成持续到模型主动完成。该问题仅在系统配置了 Redis 时触发;未启用 Redis 的环境下停止功能正常。

报错原文

No errors in the log

注:用户明确说明日志中无错误输出,停止按钮点击后 UI 无响应,后端继续生成。

原因分析

可能原因:Open WebUI 在使用 Redis 作为消息代理(如 Celery 任务队列或 WebSocket 消息中间件)时,前端发送的停止信号无法被正确路由到后端生成进程。具体地,停止生成操作依赖于一个终止事件或 cancel 消息,该消息可能需要通过 Redis 发布/订阅通道或任务控制接口传递;如果 Redis 的通道配置(如 key 命名、通道名不匹配)或连接池超时设置存在问题,取消事件可能丢失或未被消费。相关 Issue #26779 直接匹配此行为,确认停止按钮在 Redis 配置下完全失效。

环境排查

  • Open WebUI 版本:0.10.2(用户已确认使用最新版,但建议升级到最新 Bugfix 版本)
  • 安装方式:Docker
  • Redis 配置:确认是否启用了 Redis 作为消息队列(如 USE_REDIS=true 环境变量或 Docker 服务依赖)
  • Redis 连接字符串:检查 REDIS_URL 格式是否正确(默认 redis://redis:6379/0
  • Celery/任务队列:确认是否启用了 Celery worker 并正确连接到 Redis broker
  • 其他相关配置:ENABLE_WEBSOCKET_SUPPORTWEBSOCKET_MANAGER

解决步骤

  1. 升级 Open WebUI 至最新版本,检查 Release Notes 中是否有针对 Redis 停止问题的修复。
  2. 临时移除 Redis 配置(如设置 USE_REDIS=false 或取消 Redis 服务绑定),重启容器,验证停止按钮是否恢复正常工作——这可以确认问题确实由 Redis 引入。
  3. 如果必须使用 Redis,检查 Docker Compose 配置中 Redis 服务与 Open WebUI 容器之间的网络连通性,确保 REDIS_URL 可访问。
  4. 可优先尝试:确认是否在 Open WebUI 配置中启用了 ENABLE_WEBSOCKET_SUPPORT=true,并且 WebSocket 管理器(如 Socket.IO 适配器)正确使用了 Redis pub/sub 通道(配置 SOCKET_IO_ADAPTER=redis)。
  5. 检查 Redis 消息通道名称是否与 Open WebUI 内部使用的命名一致(如 open-webui:*)。如果使用了自定义 Redis 命名空间,可能在取消事件传递时不匹配。
  6. 查看 Open WebUI 容器内 /app/backend/data/log 下的日志,启用 LOG_LEVEL=DEBUG 重新测试停止操作,观察是否有与 cancel 事件相关的日志条目。
  7. 确认 Celery 或后台任务 worker 能正确消费 cancel task——在 docker exec 中手动触发一次取消测试。

验证方法

确认步骤:移除 Redis 配置后,前端点击停止按钮,流式输出应在 1-3 秒内中断,UI 显示生成停止状态。重新启用 Redis 后,同样操作应不再卡住。如果升级版本后仍无法修复,建议在 GitHub Issue 中补充 Docker 完整配置和 docker-compose.yml 片段。

参考来源

open-webui/open-webui #27103

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 13547

发表回复

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