fix: isolate startup steps so repair scan always runs

This commit is contained in:
2026-02-22 12:29:17 +01:00
parent bbf0a0815a
commit 759cd09ded

View File

@@ -233,38 +233,50 @@ async def lifespan(_application: FastAPI):
# Perform initial setup if needed
await perform_initial_setup()
# Get anime service for later use
from src.server.utils.dependencies import get_anime_service
anime_service = get_anime_service()
# Get anime service and load series — isolated so a missing
# directory doesn't abort the rest of the startup sequence
try:
from src.server.utils.dependencies import get_anime_service
anime_service = get_anime_service()
# Always load series from database into memory on startup
logger.info("Loading series from database into memory...")
await anime_service._load_series_from_db()
logger.info("Series loaded from database into memory")
# Always load series from database into memory on startup
logger.info("Loading series from database into memory...")
await anime_service._load_series_from_db()
logger.info("Series loaded from database into memory")
except Exception as e:
logger.warning(
"Could not load series into memory (directory may not "
"exist yet): %s", e
)
# Run NFO scan only on first run (if configured)
await perform_nfo_scan_if_needed()
# Now initialize download service (will use data from database)
from src.server.utils.dependencies import get_download_service
download_service = get_download_service()
await download_service.initialize()
initialized['services'] = True
logger.info("Download service initialized and queue restored")
# Initialize download service
try:
from src.server.utils.dependencies import get_download_service
download_service = get_download_service()
await download_service.initialize()
initialized['services'] = True
logger.info("Download service initialized and queue restored")
except Exception as e:
logger.warning("Failed to initialize download service: %s", e)
# Initialize background loader service
from src.server.utils.dependencies import get_background_loader_service
background_loader = get_background_loader_service()
await background_loader.start()
initialized['background_loader'] = True
logger.info("Background loader service started")
background_loader = None
try:
from src.server.utils.dependencies import get_background_loader_service
background_loader = get_background_loader_service()
await background_loader.start()
initialized['background_loader'] = True
logger.info("Background loader service started")
except Exception as e:
logger.warning("Failed to start background loader service: %s", e)
# Initialize and start scheduler service
from src.server.services.scheduler_service import get_scheduler_service
scheduler_service = get_scheduler_service()
try:
from src.server.services.scheduler_service import get_scheduler_service
scheduler_service = get_scheduler_service()
await scheduler_service.start()
initialized['scheduler'] = True
logger.info("Scheduler service started")
@@ -286,10 +298,8 @@ async def lifespan(_application: FastAPI):
except (OSError, RuntimeError, ValueError) as e:
logger.warning("Failed to initialize services: %s", e)
# Continue startup - services can be initialized later
except Exception as e: # includes HTTPException from get_anime_service
logger.warning(
"Failed to initialize services (anime directory may not exist): %s", e
)
except Exception as e:
logger.warning("Unexpected error during startup initialization: %s", e)
# Continue startup - services can be configured/initialized later
logger.info("FastAPI application started successfully")