utils — 通用工具¶
utils.retry_utils¶
retry_utils
¶
重试工具模块
提供带指数退避的智能重试装饰器和辅助函数 用于增强xtquant等数据源的稳定性
RetryStats
¶
重试统计收集器
源代码位于: utils/retry_utils.py
record_success
¶
record_failure
¶
get_stats
¶
获取统计数据
源代码位于: utils/retry_utils.py
retry_with_backoff
¶
retry_with_backoff(max_retries: int = 3, initial_delay: float = 0.5, max_delay: float = 5.0, backoff_factor: float = 2.0, retryable_exceptions: Tuple[Type[Exception], ...] = (Exception,), logger_name: str = 'DataMaster.Retry') -> Callable
带指数退避的重试装饰器
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
max_retries
|
int
|
最大重试次数 |
3
|
initial_delay
|
float
|
初始延迟(秒) |
0.5
|
max_delay
|
float
|
最大延迟(秒) |
5.0
|
backoff_factor
|
float
|
退避因子 |
2.0
|
retryable_exceptions
|
Tuple[Type[Exception], ...]
|
可重试的异常类型 |
(Exception,)
|
logger_name
|
str
|
日志记录器名称 |
'DataMaster.Retry'
|
返回:
| 类型 | 描述 |
|---|---|
Callable
|
装饰器函数 |
Example
@retry_with_backoff(max_retries=3, initial_delay=0.5) def get_data(): # 可能失败的操作 pass
源代码位于: utils/retry_utils.py
retry_on_failure
¶
retry_on_failure(func: Callable, max_retries: int = 3, delay: float = 0.5, backoff: bool = True, on_retry: Callable = None, logger: Logger = None) -> Any
执行带重试的函数调用
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
func
|
Callable
|
要执行的函数 |
必需 |
max_retries
|
int
|
最大重试次数 |
3
|
delay
|
float
|
重试延迟(秒) |
0.5
|
backoff
|
bool
|
是否使用指数退避 |
True
|
on_retry
|
Callable
|
重试时的回调函数 |
None
|
logger
|
Logger
|
日志记录器 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Any
|
函数执行结果 |
Example
result = retry_on_failure( lambda: api.get_data(), max_retries=3, delay=0.5 )
源代码位于: utils/retry_utils.py
utils.lib_loader¶
lib_loader
¶
动态库加载管理器
支持内置库和系统库的智能加载和切换
LibLoader
¶
库加载管理器
初始化库加载器
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
config
|
dict
|
配置字典,包含use_builtin_libs等选项 |
None
|
源代码位于: utils/lib_loader.py
load_library
¶
智能加载库(内置库或系统库)
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
lib_name
|
str
|
库名称 (mootdx/baostock/tushare/pandas等) |
必需 |
fallback
|
bool
|
是否在失败时降级尝试另一种方式 |
True
|
返回:
| 类型 | 描述 |
|---|---|
Optional[Any]
|
加载的库模块,失败返回None |
源代码位于: utils/lib_loader.py
check_library
¶
检查库的可用性
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
lib_name
|
str
|
库名称 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
dict
|
检查结果字典 |
源代码位于: utils/lib_loader.py
get_library_status
¶
获取所有库的加载状态
返回:
| 类型 | 描述 |
|---|---|
dict
|
状态字典 |
源代码位于: utils/lib_loader.py
reload_library
¶
重新加载库
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
lib_name
|
str
|
库名称 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
bool
|
是否成功 |