feat: Run database migrations in a thread pool to avoid blocking during initialization

This commit is contained in:
JSC
2025-09-21 13:21:23 +02:00
parent 2b61d35d6a
commit d5f9a3c736
2 changed files with 9 additions and 5 deletions

View File

@@ -1,3 +1,4 @@
import asyncio
from collections.abc import AsyncGenerator, Callable
from alembic.config import Config
@@ -49,8 +50,10 @@ async def init_db() -> None:
# Get the alembic config
alembic_cfg = Config("alembic.ini")
# Run migrations to the latest revision
command.upgrade(alembic_cfg, "head")
# Run migrations to the latest revision in a thread pool to avoid blocking
await asyncio.get_event_loop().run_in_executor(
None, command.upgrade, alembic_cfg, "head",
)
logger.info("Database migrations completed successfully")
except Exception:

View File

@@ -28,8 +28,8 @@ async def lifespan(_app: FastAPI) -> AsyncGenerator[None]:
logger = get_logger(__name__)
logger.info("Starting application")
await init_db()
logger.info("Database initialized")
# await init_db()
# logger.info("Database initialized")
# Start the extraction processor
await extraction_processor.start()
@@ -43,7 +43,8 @@ async def lifespan(_app: FastAPI) -> AsyncGenerator[None]:
try:
player_service = get_player_service() # Get the initialized player service
app_services.scheduler_service = SchedulerService(
get_session_factory(), player_service,
get_session_factory(),
player_service,
)
await app_services.scheduler_service.start()
logger.info("Enhanced scheduler service started")