diff --git a/py/routes/lora_routes.py b/py/routes/lora_routes.py index de3d043b..64c71385 100644 --- a/py/routes/lora_routes.py +++ b/py/routes/lora_routes.py @@ -52,8 +52,9 @@ class LoraRoutes: try: # 不等待缓存数据,直接检查缓存状态 is_initializing = ( - self.scanner._cache is None or - (hasattr(self.scanner, '_cache') and len(self.scanner._cache.raw_data) == 0) + self.scanner._cache is None and + (self.scanner._initialization_task is not None and + not self.scanner._initialization_task.done()) ) if is_initializing: diff --git a/py/services/lora_scanner.py b/py/services/lora_scanner.py index dcae1f51..53f6d4b3 100644 --- a/py/services/lora_scanner.py +++ b/py/services/lora_scanner.py @@ -84,19 +84,31 @@ class LoraScanner: async def _initialize_cache(self) -> None: """Initialize or refresh the cache""" - # Scan for new data - raw_data = await self.scan_all_loras() - - # Update cache - self._cache = LoraCache( - raw_data=raw_data, - sorted_by_name=[], - sorted_by_date=[], - folders=[] - ) - - # Call resort_cache to create sorted views - await self._cache.resort() + try: + # Scan for new data + raw_data = await self.scan_all_loras() + + # Update cache + self._cache = LoraCache( + raw_data=raw_data, + sorted_by_name=[], + sorted_by_date=[], + folders=[] + ) + + # Call resort_cache to create sorted views + await self._cache.resort() + + self._initialization_task = None + logger.info("LoRA Manager: Cache initialization completed") + except Exception as e: + logger.error(f"LoRA Manager: Error initializing cache: {e}") + self._cache = LoraCache( + raw_data=[], + sorted_by_name=[], + sorted_by_date=[], + folders=[] + ) def fuzzy_match(self, text: str, pattern: str, threshold: float = 0.7) -> bool: """