[modify] sse format
This commit is contained in:
@@ -597,13 +597,7 @@ class WorkflowService:
|
||||
# 更新状态为运行中
|
||||
self.update_execution_status(execution.execution_id, "running")
|
||||
|
||||
# 发送开始事件
|
||||
yield format_sse_message("workflow_start", {
|
||||
"execution_id": execution.execution_id,
|
||||
"conversation_id_uuid": str(conversation_id_uuid),
|
||||
})
|
||||
|
||||
# 调用流式执行
|
||||
# 调用流式执行(executor 会发送 workflow_start 和 workflow_end 事件)
|
||||
async for event in self._run_workflow_stream(
|
||||
workflow_config=workflow_config_dict,
|
||||
input_data=input_data,
|
||||
@@ -611,16 +605,8 @@ class WorkflowService:
|
||||
workspace_id="",
|
||||
user_id=payload.user_id
|
||||
):
|
||||
# 清理事件数据,移除不可序列化的对象
|
||||
cleaned_event = self._clean_event_for_json(event)
|
||||
# 转换为 SSE 格式
|
||||
yield f"data: {json.dumps(cleaned_event)}\n\n"
|
||||
|
||||
# 发送完成事件
|
||||
yield format_sse_message("workflow_end", {
|
||||
"execution_id": execution.execution_id,
|
||||
"conversation_id_uuid": str(conversation_id_uuid),
|
||||
})
|
||||
# 直接转发 executor 的事件(已经是正确的格式)
|
||||
yield event
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"工作流流式执行失败: execution_id={execution.execution_id}, error={e}", exc_info=True)
|
||||
@@ -630,7 +616,13 @@ class WorkflowService:
|
||||
error_message=str(e)
|
||||
)
|
||||
# 发送错误事件
|
||||
yield f"data: {json.dumps({'type': 'error', 'execution_id': execution.execution_id, 'error': str(e)})}\n\n"
|
||||
yield {
|
||||
"event": "error",
|
||||
"data": {
|
||||
"execution_id": execution.execution_id,
|
||||
"error": str(e)
|
||||
}
|
||||
}
|
||||
|
||||
async def run_workflow(
|
||||
self,
|
||||
@@ -801,13 +793,11 @@ class WorkflowService:
|
||||
user_id: 用户 ID
|
||||
|
||||
Yields:
|
||||
流式事件
|
||||
流式事件(格式:{"event": "<type>", "data": {...}})
|
||||
"""
|
||||
from app.core.workflow.executor import execute_workflow_stream
|
||||
|
||||
try:
|
||||
output_data = {}
|
||||
|
||||
async for event in execute_workflow_stream(
|
||||
workflow_config=workflow_config,
|
||||
input_data=input_data,
|
||||
@@ -815,31 +805,9 @@ class WorkflowService:
|
||||
workspace_id=workspace_id,
|
||||
user_id=user_id
|
||||
):
|
||||
# 转发事件
|
||||
# 直接转发事件(executor 已经返回正确格式)
|
||||
yield event
|
||||
|
||||
# 收集输出数据
|
||||
# if event.get("type") == "node_complete":
|
||||
# node_data = event.get("data", {})
|
||||
# node_outputs = node_data.get("node_outputs", {})
|
||||
# output_data.update(node_outputs)
|
||||
#
|
||||
# # 处理完成事件
|
||||
# if event.get("type") == "workflow_complete":
|
||||
# self.update_execution_status(
|
||||
# execution_id,
|
||||
# "completed",
|
||||
# output_data=output_data
|
||||
# )
|
||||
#
|
||||
# # 处理错误事件
|
||||
# if event.get("type") == "workflow_error":
|
||||
# self.update_execution_status(
|
||||
# execution_id,
|
||||
# "failed",
|
||||
# error_message=event.get("error")
|
||||
# )
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"工作流流式执行失败: execution_id={execution_id}, error={e}", exc_info=True)
|
||||
self.update_execution_status(
|
||||
@@ -848,9 +816,11 @@ class WorkflowService:
|
||||
error_message=str(e)
|
||||
)
|
||||
yield {
|
||||
"type": "workflow_error",
|
||||
"execution_id": execution_id,
|
||||
"error": str(e)
|
||||
"event": "error",
|
||||
"data": {
|
||||
"execution_id": execution_id,
|
||||
"error": str(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user