fix: isolate startup steps so repair scan always runs
This commit is contained in:
@@ -232,46 +232,58 @@ async def lifespan(_application: FastAPI):
|
||||
if settings.anime_directory:
|
||||
# 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()
|
||||
|
||||
# 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")
|
||||
|
||||
|
||||
# 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")
|
||||
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 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")
|
||||
|
||||
# Initialize and start scheduler service
|
||||
from src.server.services.scheduler_service import get_scheduler_service
|
||||
|
||||
scheduler_service = get_scheduler_service()
|
||||
|
||||
# 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
|
||||
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
|
||||
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")
|
||||
except Exception as e:
|
||||
logger.warning("Failed to start scheduler service: %s", e)
|
||||
# Continue - scheduler is optional
|
||||
|
||||
|
||||
# Run media scan only on first run
|
||||
await perform_media_scan_if_needed(background_loader)
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user