P1: 功能修复
- v2 三处 self.format_file_size -> format_file_size(3 个端点不再必崩) - requirements 加 bcrypt、移除未使用的 aiohttp - verify_user 改用 bcrypt.checkpw(DB basic 登录恢复);SHA256 回退改自描述 PBKDF2,去掉明文接受 - config.py token 模式只在缺失时生成(不再每次 update 失效) - docker/npm/go/apt/yum 镜像补 cache_enabled/cache_ttl 初始化(不再必 500) - docker 镜像兼容 upstream_url 配置键 - 定时同步链路: 回调委托 sync_starter 并注入 _sync_manager;cron 逗号列表修复;星期偏移修复 - v2 同步方法与 v1 签名兼容;MirrorSyncManager 补 get_source_status/stop_all_tasks_for_source
This commit is contained in:
+20
-2
@@ -52,6 +52,9 @@ class SyncScheduler:
|
||||
self.on_file_updated: Optional[Callable] = None
|
||||
self.on_sync_complete: Optional[Callable] = None
|
||||
|
||||
# 定时同步执行器(注入 MirrorSyncManager.start_sync 或等效 callable)
|
||||
self.sync_starter: Optional[Callable] = None
|
||||
|
||||
# 待同步队列
|
||||
self._pending_add = [] # 待添加的文件
|
||||
self._pending_update = [] # 待更新的文件
|
||||
@@ -97,10 +100,25 @@ class SyncScheduler:
|
||||
"""创建同步回调函数"""
|
||||
def sync_callback(task_name: str, config: dict):
|
||||
logger.info(f"定时同步任务触发: {source_name}")
|
||||
self.start_sync(source_name)
|
||||
return True
|
||||
# 委托给注入的同步执行器(MirrorSyncManager.start_sync)
|
||||
starter = self.sync_starter or self._default_sync_starter()
|
||||
if starter:
|
||||
try:
|
||||
return bool(starter(source_name))
|
||||
except Exception as e:
|
||||
logger.error(f"触发同步 {source_name} 失败: {e}")
|
||||
return False
|
||||
logger.error(f"无法触发同步 {source_name}: 未配置同步执行器(sync_starter)")
|
||||
return False
|
||||
return sync_callback
|
||||
|
||||
def _default_sync_starter(self):
|
||||
"""尝试从配置获取 MirrorSyncManager 实例(server.py 启动时注入)"""
|
||||
mgr = self.config.get('_sync_manager')
|
||||
if mgr and hasattr(mgr, 'start_sync'):
|
||||
return mgr.start_sync
|
||||
return None
|
||||
|
||||
def start(self):
|
||||
"""启动同步调度器"""
|
||||
if self._running:
|
||||
|
||||
Reference in New Issue
Block a user