浏览代码

fix(workflow): fetch user failed when workflow run in parallel mode (#20321)

Signed-off-by: -LAN- <laipz8200@outlook.com>
tags/1.4.2
-LAN- 5 个月前
父节点
当前提交
f233a64eb5
没有帐户链接到提交者的电子邮件

+ 1
- 1
api/core/app/apps/advanced_chat/app_generator.py 查看文件

@@ -452,7 +452,7 @@ class AdvancedChatAppGenerator(MessageBasedAppGenerator):
for var, val in context.items():
var.set(val)

# Save current user before entering new app context
# FIXME(-LAN-): Save current user before entering new app context
from flask import g

saved_user = None

+ 1
- 1
api/core/app/apps/agent_chat/app_generator.py 查看文件

@@ -232,7 +232,7 @@ class AgentChatAppGenerator(MessageBasedAppGenerator):
for var, val in context.items():
var.set(val)

# Save current user before entering new app context
# FIXME(-LAN-): Save current user before entering new app context
from flask import g

saved_user = None

+ 1
- 1
api/core/app/apps/workflow/app_generator.py 查看文件

@@ -411,7 +411,7 @@ class WorkflowAppGenerator(BaseAppGenerator):
for var, val in context.items():
var.set(val)

# Save current user before entering new app context
# FIXME(-LAN-): Save current user before entering new app context
from flask import g

saved_user = None

+ 14
- 1
api/core/workflow/graph_engine/graph_engine.py 查看文件

@@ -9,7 +9,7 @@ from copy import copy, deepcopy
from datetime import UTC, datetime
from typing import Any, Optional, cast

from flask import Flask, current_app
from flask import Flask, current_app, has_request_context

from configs import dify_config
from core.app.apps.base_app_queue_manager import GenerateTaskStoppedError
@@ -540,8 +540,21 @@ class GraphEngine:
for var, val in context.items():
var.set(val)

# FIXME(-LAN-): Save current user before entering new app context
from flask import g

saved_user = None
if has_request_context() and hasattr(g, "_login_user"):
saved_user = g._login_user

with flask_app.app_context():
try:
# Restore user in new app context
if saved_user is not None:
from flask import g

g._login_user = saved_user

q.put(
ParallelBranchRunStartedEvent(
parallel_id=parallel_id,

+ 15
- 1
api/core/workflow/nodes/iteration/iteration_node.py 查看文件

@@ -7,7 +7,7 @@ from datetime import UTC, datetime
from queue import Empty, Queue
from typing import TYPE_CHECKING, Any, Optional, cast

from flask import Flask, current_app
from flask import Flask, current_app, has_request_context

from configs import dify_config
from core.variables import ArrayVariable, IntegerVariable, NoneVariable
@@ -586,7 +586,21 @@ class IterationNode(BaseNode[IterationNodeData]):
"""
for var, val in context.items():
var.set(val)

# FIXME(-LAN-): Save current user before entering new app context
from flask import g

saved_user = None
if has_request_context() and hasattr(g, "_login_user"):
saved_user = g._login_user

with flask_app.app_context():
# Restore user in new app context
if saved_user is not None:
from flask import g

g._login_user = saved_user

parallel_mode_run_id = uuid.uuid4().hex
graph_engine_copy = graph_engine.create_copy()
variable_pool_copy = graph_engine_copy.graph_runtime_state.variable_pool

正在加载...
取消
保存