Fix: several bug fixes
This commit is contained in:
parent
96ecc321ec
commit
9967bff6dc
4 changed files with 112 additions and 31 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue