From f50289a2d49b4e563a4b8f8752a173c1dc3b2bfa Mon Sep 17 00:00:00 2001 From: Ole Valente Date: Sat, 11 Jul 2026 00:02:10 +0200 Subject: [PATCH] Make ML imports lazy in tasks so celery can register without torch/pyannote at import time --- backend/app/tasks/generate.py | 7 ++++--- backend/app/tasks/process.py | 9 +++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/backend/app/tasks/generate.py b/backend/app/tasks/generate.py index 966ff8b..ac206c6 100644 --- a/backend/app/tasks/generate.py +++ b/backend/app/tasks/generate.py @@ -8,8 +8,6 @@ from sqlalchemy.orm import Session from .celery_app import celery_app from ..config import settings from ..models.tables import Video, Segment, Job, VideoStatus, JobStatus -from ..services.tts import synthesize_segment, unload_model as unload_tts -from ..services.mixer import mix_audio from ..services.video_utils import build_output_path logger = logging.getLogger(__name__) @@ -21,8 +19,11 @@ def _get_sync_session(): return Session(engine) -@celery_app.task(bind=True, name="generate_audio") +@celery_app.task(bind=True, name="app.tasks.generate.generate_audio") def generate_audio(self, video_id: int, job_id: int = None): + from ..services.tts import synthesize_segment, unload_model as unload_tts + from ..services.mixer import mix_audio + db = _get_sync_session() temp_files = [] audio_dir = None diff --git a/backend/app/tasks/process.py b/backend/app/tasks/process.py index 481bb88..a961582 100644 --- a/backend/app/tasks/process.py +++ b/backend/app/tasks/process.py @@ -6,9 +6,6 @@ from sqlalchemy.orm import Session from .celery_app import celery_app from ..config import settings from ..models.tables import Video, Segment, Job, VideoStatus, JobStatus -from ..services.diarization import diarize, unload_model as unload_diarization -from ..services.stt import transcribe_segment, unload_model as unload_stt -from ..services.translator import translate, unload_model as unload_translate from ..services.video_utils import extract_audio logger = logging.getLogger(__name__) @@ -20,8 +17,12 @@ def _get_sync_session(): return Session(engine) -@celery_app.task(bind=True, name="process_video") +@celery_app.task(bind=True, name="app.tasks.process.process_video") def process_video(self, video_id: int, job_id: int = None): + from ..services.diarization import diarize, unload_model as unload_diarization + from ..services.stt import transcribe_segment, unload_model as unload_stt + from ..services.translator import translate, unload_model as unload_translate + db = _get_sync_session() temp_files = [] try: