refactor(sync): 引入 SyncRegistry 注册表模式管理同步任务
- 新增 sync_registry.py 模块,提供统一的同步任务注册和管理机制 - 在 api_wrappers/__init__.py 中实现自动注册逻辑,新增接口无需修改 sync.py - 重构 sync_all_data() 函数,使用注册表模式替代手动罗列,代码从 400+ 行精简至 293 行 - 新增 selected 参数,支持选择性执行特定同步任务 - 新增 list_sync_tasks() 函数,方便查看所有已注册任务
This commit is contained in:
@@ -88,6 +88,7 @@ __all__ = [
|
||||
# Historical stock list
|
||||
"get_bak_basic",
|
||||
"sync_bak_basic",
|
||||
"BakBasicSync",
|
||||
# Namechange
|
||||
"get_namechange",
|
||||
"sync_namechange",
|
||||
@@ -105,3 +106,77 @@ __all__ = [
|
||||
"sync_stock_st",
|
||||
"StockSTSync",
|
||||
]
|
||||
|
||||
# =============================================================================
|
||||
# 自动注册同步任务到 SyncRegistry
|
||||
# 这样 sync.py 不需要手动罗列各个接口
|
||||
# =============================================================================
|
||||
|
||||
try:
|
||||
from src.data.sync_registry import sync_registry
|
||||
|
||||
# 1. Trade Calendar - 最高优先级,其他任务可能依赖
|
||||
sync_registry.register_func(
|
||||
name="trade_cal",
|
||||
sync_func=sync_trade_cal_cache,
|
||||
display_name="交易日历",
|
||||
description="交易日期缓存",
|
||||
order=1,
|
||||
)
|
||||
|
||||
# 2. Stock Basic - 基础数据
|
||||
sync_registry.register_func(
|
||||
name="stock_basic",
|
||||
sync_func=sync_all_stocks,
|
||||
display_name="股票基本信息",
|
||||
description="所有上市/退市股票的基础信息",
|
||||
order=2,
|
||||
)
|
||||
|
||||
# 3. Pro Bar - 通用行情(推荐用于替代日线)
|
||||
from src.data.api_wrappers.api_pro_bar import ProBarSync
|
||||
|
||||
sync_registry.register_class(
|
||||
name="pro_bar",
|
||||
sync_class=ProBarSync,
|
||||
display_name="Pro Bar 数据",
|
||||
description="包含复权因子、换手率、量比的数据",
|
||||
order=10,
|
||||
)
|
||||
|
||||
# 4. Daily Basic - 每日指标
|
||||
from src.data.api_wrappers.api_daily_basic import DailyBasicSync
|
||||
|
||||
sync_registry.register_class(
|
||||
name="daily_basic",
|
||||
sync_class=DailyBasicSync,
|
||||
display_name="每日指标",
|
||||
description="市盈率、市净率、换手率、市值等指标",
|
||||
order=20,
|
||||
)
|
||||
|
||||
# 5. Bak Basic - 历史股票列表
|
||||
from src.data.api_wrappers.api_bak_basic import BakBasicSync
|
||||
|
||||
sync_registry.register_class(
|
||||
name="bak_basic",
|
||||
sync_class=BakBasicSync,
|
||||
display_name="历史股票列表",
|
||||
description="历史股票列表(包含退市股票)",
|
||||
order=30,
|
||||
)
|
||||
|
||||
# 6. ST Stock - ST股票列表
|
||||
from src.data.api_wrappers.api_stock_st import StockSTSync
|
||||
|
||||
sync_registry.register_class(
|
||||
name="stock_st",
|
||||
sync_class=StockSTSync,
|
||||
display_name="ST股票列表",
|
||||
description="ST股票历史记录",
|
||||
order=40,
|
||||
)
|
||||
|
||||
except ImportError:
|
||||
# sync_registry 可能不存在(首次导入),忽略
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user