Working outside of application context.

用户在使用 Dify 自托管(Docker)版本 1.15.0 时,导入 DSL 工作流文件并运行。工作流中包含一个 迭代节点(Iteration node) ,其配置为 is_parallel: true (并行模式)且 parallel_nums: 10 (并行数为10),迭代内部执行了一个 L

Working outside of application context.

Working outside of application context.

快速结论:该报错通常出现在 Dify 工作流中使用并行迭代节点(Parallel Iteration)时,内部 LLM 节点在子线程中丢失了 Flask 应用上下文。优先检查工作流中的迭代节点是否开启了并行模式,并尝试关闭并行。

问题场景

用户在使用 Dify 自托管(Docker)版本 1.15.0 时,导入 DSL 工作流文件并运行。工作流中包含一个迭代节点(Iteration node),其配置为 is_parallel: true(并行模式)且 parallel_nums: 10(并行数为10),迭代内部执行了一个 LLM 节点。触发报错后,工作流中有一个节点运行异常。

报错原文

Working outside of application context.

This typically means that you attempted to use functionality that needed
the current application. To solve this, set up an application context
with app.app_context(). See the documentation for more information.
There are 1 nodes in the process running abnormally, please go to [TRACING](https://console-platform-dev-aks.dify.dev/app/0bdba5d6-1472-4501-95e7-582339d719b2/workflow#tracing) to check the logs.

原因分析

这是 Dify 工作流引擎中一个已知的 Bug 类别。当 LLM 节点在并行迭代的子线程中运行时,工作线程会丢失 Flask 应用上下文(Application Context),导致上述错误。已有多个 PR 逐步修复了此问题,包括通过 preserve_flask_contexts() 工具函数、框架无关的 capture_current_context() 上下文系统、线程本地上下文隔离以及数据库会话迁移等方法。但在 v1.15.0 版本中,可能仍存在 GraphEngine 工作线程上下文传播的遗留缺口。

环境排查

  • Dify 版本:1.15.0(确认是否为问题版本,需关注后续补丁版本)
  • 部署方式:Self Hosted(Docker)
  • 工作流配置:检查迭代节点是否设置了 is_parallel: true 以及 parallel_nums 数值
  • 请检查工作流中所有节点的日志,特别是通过 TRACING 链接查看完整堆栈信息

解决步骤

  1. 临时绕过方案(可优先尝试):关闭迭代节点的并行模式。在迭代节点的配置中,将 is_parallel 设置为 false,这会使迭代以串行方式运行,从而避免上下文丢失问题。
  2. 确认版本修复:检查你的 Dify 版本是否已包含相关修复 PR,例如:
    • PR #26098:修复并行迭代中 LLM 节点丢失 Flask 上下文(引入了 preserve_flask_contexts()
    • PR #30607:引入框架无关的上下文系统(capture_current_context()
    • PR #31410:添加线程本地上下文隔离
    • PR #35855:迁移数据库会话处理以支持线程上下文

    如果版本较旧,升级到包含这些修复的较新版本。

  3. 收集完整堆栈信息:打开报错信息中提供的 TRACING 链接,查看该异常节点的完整日志和堆栈跟踪,以定位具体是哪条代码路径丢失了上下文。将日志提供给开发者或用于进一步排查。
  4. 简化工作流测试:创建一个最小化工作流来隔离问题,例如仅包含一个简单的迭代节点(不开并行)和一个 LLM 节点,确认问题是否仍然存在,以排除其他工作流节点的干扰。

验证方法

关闭并行模式后重新运行工作流,确认不再出现 Working outside of application context. 错误。如果升级了 Dify 版本,重新导入 DSL 并用并行模式测试,验证问题是否已修复。同时检查 TRACING 日志中该节点是否有正常运行的输出。

参考来源

langgenius/dify #38299

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 11026

发表回复

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