Correction Retry Logic
This commit is contained in:
@@ -18,6 +18,7 @@ from flask import Blueprint, request, jsonify, Response, send_file, stream_with_
|
|||||||
from typing import Dict, Any, List, Optional
|
from typing import Dict, Any, List, Optional
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
from .agent import ReportAgent, create_agent
|
from .agent import ReportAgent, create_agent
|
||||||
|
from .nodes import ChapterJsonParseError
|
||||||
from .utils.config import settings
|
from .utils.config import settings
|
||||||
|
|
||||||
|
|
||||||
@@ -185,7 +186,7 @@ class ReportTask:
|
|||||||
self.task_id = task_id
|
self.task_id = task_id
|
||||||
self.query = query
|
self.query = query
|
||||||
self.custom_template = custom_template
|
self.custom_template = custom_template
|
||||||
self.status = "pending" # pending, running, completed, error
|
self.status = "pending" # 四种状态(pending/running/completed/error)
|
||||||
self.progress = 0
|
self.progress = 0
|
||||||
self.result = None
|
self.result = None
|
||||||
self.error_message = ""
|
self.error_message = ""
|
||||||
@@ -377,6 +378,25 @@ def run_report_generation(task: ReportTask, query: str, custom_template: str = "
|
|||||||
stream_handler=stream_handler
|
stream_handler=stream_handler
|
||||||
)
|
)
|
||||||
break
|
break
|
||||||
|
except ChapterJsonParseError as err:
|
||||||
|
hint_message = "尝试将Report Engine的API更换为算力更强、上下文更长的LLM"
|
||||||
|
task.publish_event('warning', {
|
||||||
|
'message': hint_message,
|
||||||
|
'stage': 'agent_running',
|
||||||
|
'attempt': attempt,
|
||||||
|
'reason': 'chapter_json_parse',
|
||||||
|
'error': str(err),
|
||||||
|
'task': task.to_dict(),
|
||||||
|
})
|
||||||
|
# 旧逻辑:在JSON解析失败后重启Report Engine
|
||||||
|
# backoff = min(5 * attempt, 15)
|
||||||
|
# task.publish_event('stage', {
|
||||||
|
# 'message': f'{backoff} 秒后重试生成任务',
|
||||||
|
# 'stage': 'retry_wait',
|
||||||
|
# 'wait_seconds': backoff
|
||||||
|
# })
|
||||||
|
# time.sleep(backoff)
|
||||||
|
raise ChapterJsonParseError(hint_message) from err
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
# 将错误即时推送至前端,方便观察重试策略
|
# 将错误即时推送至前端,方便观察重试策略
|
||||||
task.publish_event('warning', {
|
task.publish_event('warning', {
|
||||||
|
|||||||
Reference in New Issue
Block a user