This commit is contained in:
aaron 2026-04-17 00:32:21 +08:00
parent 26624b00d0
commit 1eaf608ece
3 changed files with 4 additions and 20 deletions

View File

@ -325,11 +325,6 @@ async def data_reset(req: DataResetRequest, admin: dict = Depends(get_current_ad
await db.commit() await db.commit()
# 清除内存缓存
from app.engine.recommender import _latest_result
import app.engine.recommender as recommender_mod
recommender_mod._latest_result = None
logger.info(f"管理员 {admin['username']} 执行数据重置: mode={req.mode}, deleted={deleted}") logger.info(f"管理员 {admin['username']} 执行数据重置: mode={req.mode}, deleted={deleted}")
return { return {

View File

@ -15,9 +15,6 @@ from app.db import tables
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# 内存中的最新推荐结果
_latest_result: dict | None = None
# 扫描锁:防止同时触发两次扫描 # 扫描锁:防止同时触发两次扫描
_scan_lock = asyncio.Lock() _scan_lock = asyncio.Lock()
_scan_running = False _scan_running = False
@ -25,11 +22,11 @@ _scan_running = False
async def refresh_recommendations(trade_date: str = None, scan_session: str = "manual") -> dict: async def refresh_recommendations(trade_date: str = None, scan_session: str = "manual") -> dict:
"""刷新推荐列表(带扫描锁防止并发)""" """刷新推荐列表(带扫描锁防止并发)"""
global _latest_result, _scan_running global _scan_running
if _scan_lock.locked(): if _scan_lock.locked():
logger.warning("扫描已在执行中,跳过本次触发") logger.warning("扫描已在执行中,跳过本次触发")
return _latest_result or {"market_temp": None, "hot_sectors": [], "recommendations": []} return await _load_today_from_db()
async with _scan_lock: async with _scan_lock:
_scan_running = True _scan_running = True
@ -41,8 +38,6 @@ async def refresh_recommendations(trade_date: str = None, scan_session: str = "m
rec.scan_session = scan_session rec.scan_session = scan_session
rec.created_at = datetime.now() rec.created_at = datetime.now()
_latest_result = result
# 持久化到数据库 # 持久化到数据库
await _save_to_db(result) await _save_to_db(result)
@ -260,18 +255,12 @@ async def get_performance_stats() -> dict:
async def get_latest_recommendations() -> dict: async def get_latest_recommendations() -> dict:
"""获取最新推荐结果""" """获取最新推荐结果(直接从数据库读取,不做内存缓存)"""
if _latest_result:
return _latest_result
# 如果内存中没有,从数据库加载今日的
return await _load_today_from_db() return await _load_today_from_db()
async def get_latest_sectors() -> list[SectorInfo]: async def get_latest_sectors() -> list[SectorInfo]:
"""获取最新的板块热度数据(只读缓存,不触发扫描)""" """获取最新的板块热度数据(从数据库读取,不触发扫描)"""
if _latest_result and _latest_result.get("hot_sectors"):
return _latest_result["hot_sectors"]
# 内存中没有,从数据库加载
return await _load_sectors_from_db() return await _load_sectors_from_db()