Files
whisperbox-transcribe/app/worker/main.py
2023-01-25 16:56:59 +01:00

38 lines
937 B
Python

from time import sleep
from uuid import UUID
from celery import Celery
from sqlalchemy.orm import Session
import app.shared.db.dtos as dtos
import app.shared.db.models as models
from app.shared.config import settings
from app.shared.db.base import SessionLocal
celery = Celery(__name__)
celery.conf.broker_url = settings.BROKER_URI
def update_job_status(db: Session, job_id: UUID, status: dtos.JobStatus) -> None:
db.begin()
job = db.query(models.Job).filter(models.Job.id == job_id).one()
job.status = status
db.commit()
@celery.task()
def transcribe(job_id: UUID) -> int:
try:
db: Session = SessionLocal()
update_job_status(db, job_id, dtos.JobStatus.processing)
sleep(60)
update_job_status(db, job_id, dtos.JobStatus.success)
db.commit()
except Exception:
update_job_status(db, job_id, dtos.JobStatus.error)
finally:
db.close()
return 0