v2.0.1 修复搜索并发冲突与提交失败问题
- 搜索服务改用 namespace 隔离浏览器实例(参考 webtest-agent 方案), 解决定时任务与手动处理并发调用 agent-browser 互相踢掉导致搜索结果为0的问题 - agent-browser 调用加瞬时错误自动重试,使用 /tmp/xdg-rt 目录 - 步骤4 提示词放宽:品牌/系列相关页面也纳入提取,无精确型号时兜底选最相关内容 - 步骤4 大模型返回空时自动兜底,不再直接跳过导致会话卡死 - 会话收尾修复:失败/无数据时会话状态正确标记,并自动移除待处理产品 - 处理入口统一:定时任务/单产品/批量处理均改为 process_monitor 大模型流程(防重) - paramhub_client 增加登录态自动恢复:401 或连接失败时自动重新登录重试 - 全流程实测通过:deepseek-v4-flash-0731 → review_id 19ed2daaabfe
This commit is contained in:
+11
-24
@@ -5,7 +5,6 @@ from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from apscheduler.triggers.interval import IntervalTrigger
|
||||
from datetime import datetime
|
||||
from models.database import db
|
||||
from services.process_service import process_service
|
||||
from config import Config
|
||||
import logging
|
||||
|
||||
@@ -63,8 +62,11 @@ task_scheduler = TaskScheduler()
|
||||
|
||||
def auto_process_task():
|
||||
"""
|
||||
自动处理产品的定时任务
|
||||
自动处理产品的定时任务(大模型驱动)
|
||||
通过 process_monitor 启动异步处理会话,避免与手动处理并发冲突
|
||||
"""
|
||||
from services.process_monitor import process_monitor
|
||||
|
||||
try:
|
||||
# 检查是否启用自动处理
|
||||
enabled = db.get_system_config('auto_process_enabled', 'true')
|
||||
@@ -86,33 +88,18 @@ def auto_process_task():
|
||||
|
||||
for product in products:
|
||||
try:
|
||||
# 检查是否正在处理
|
||||
processing = db.get_processing_products()
|
||||
if any(p['product_name'] == product['product_name'] for p in processing):
|
||||
logger.warning(f"产品 {product['product_name']} 正在处理中,跳过")
|
||||
continue
|
||||
|
||||
# 添加到处理中列表
|
||||
db.start_processing(
|
||||
# 启动大模型处理会话(内部有防重,已有活跃会话会自动跳过)
|
||||
session_id, started = process_monitor.start_process(
|
||||
product_name=product['product_name'],
|
||||
category=product.get('category'),
|
||||
subcategory=product.get('subcategory')
|
||||
)
|
||||
|
||||
# 执行处理
|
||||
result = process_service.process_product(product)
|
||||
|
||||
# 从待处理列表移除
|
||||
db.remove_pending_product(product['product_name'])
|
||||
|
||||
logger.info(f"产品 {product['product_name']} 处理完成: {result['message']}")
|
||||
|
||||
if started:
|
||||
logger.info(f"产品 {product['product_name']} 处理会话已启动: {session_id}")
|
||||
else:
|
||||
logger.info(f"产品 {product['product_name']} 已有处理会话: {session_id}")
|
||||
except Exception as e:
|
||||
logger.error(f"处理产品 {product['product_name']} 时出错: {str(e)}")
|
||||
db.finish_processing(product['product_name'])
|
||||
finally:
|
||||
# 确保从处理中列表移除
|
||||
db.finish_processing(product['product_name'])
|
||||
logger.error(f"启动产品 {product['product_name']} 处理会话时出错: {str(e)}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"自动处理任务执行失败: {str(e)}")
|
||||
|
||||
Reference in New Issue
Block a user