dashboard_warmup.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. """
  2. 仪表盘数据预热
  3. 启动时通过 MemoryService 三线程并行获取指数、自选、热点资讯,
  4. 将结果写入 MXTimedCache,首屏请求即可命中缓存。
  5. """
  6. from __future__ import annotations
  7. import logging
  8. logger = logging.getLogger(__name__)
  9. DASHBOARD_INDEX_NAMES: tuple[str, ...] = (
  10. "上证指数",
  11. "深证成指",
  12. "创业板指",
  13. "沪深300",
  14. )
  15. def warm_dashboard_cache() -> None:
  16. """通过记忆系统三线程并行预取仪表盘妙想缓存"""
  17. try:
  18. from app.services.memory_service import get_memory_service
  19. mem = get_memory_service()
  20. if mem.should_refresh():
  21. logger.info("仪表盘预热: 触发三线程并行获取...")
  22. mem.parallel_fetch()
  23. logger.info("仪表盘预热: 完成 (indices=%d, watchlist=%d)",
  24. len(mem.get_indices()), mem.get_stats().get("watchlist_count", 0))
  25. else:
  26. logger.info("仪表盘预热: 今日已缓存,跳过刷新")
  27. except Exception as exc:
  28. logger.warning("仪表盘预热失败(可忽略): %s", exc)