Fix: several bug fixes

This commit is contained in:
ziesorx 2025-09-12 22:44:27 +07:00
parent 96ecc321ec
commit 9967bff6dc
4 changed files with 112 additions and 31 deletions

View file

@ -7,13 +7,16 @@ for the detection worker.
import os
import logging
import threading
from typing import Dict, Any, Optional, List, Set, Tuple
from typing import Dict, Any, Optional, List, Set, Tuple, TYPE_CHECKING
from urllib.parse import urlparse
import traceback
from ..core.config import MODELS_DIR
from ..core.exceptions import ModelLoadError
if TYPE_CHECKING:
from .pipeline_loader import PipelineLoader
# Setup logging
logger = logging.getLogger("detector_worker.model_manager")
@ -110,11 +113,12 @@ class ModelManager:
- Pipeline model tree management
"""
def __init__(self, models_dir: str = MODELS_DIR):
def __init__(self, pipeline_loader: Optional['PipelineLoader'] = None, models_dir: str = MODELS_DIR):
"""
Initialize the model manager.
Args:
pipeline_loader: Pipeline loader for handling MPTA archives (injected via DI)
models_dir: Directory to cache downloaded models
"""
self.models_dir = models_dir
@ -124,8 +128,19 @@ class ModelManager:
# Camera to models mapping
self.camera_models: Dict[str, Dict[str, Any]] = {} # camera_id -> {model_id -> model_tree}
# Pipeline loader will be injected
self.pipeline_loader = None
# Pipeline loader injected via dependency injection
self.pipeline_loader = pipeline_loader
# If pipeline_loader is None, try to resolve it from the container
if self.pipeline_loader is None:
try:
from ..core.dependency_injection import get_container
from .pipeline_loader import PipelineLoader
container = get_container()
self.pipeline_loader = container.resolve(PipelineLoader)
logger.info("PipelineLoader resolved from dependency container")
except Exception as e:
logger.warning(f"Could not resolve PipelineLoader from container: {e}")
# Create models directory if it doesn't exist
os.makedirs(self.models_dir, exist_ok=True)