plug task enqueing properly
This commit is contained in:
@@ -33,7 +33,7 @@ def create_asset(data: AssetCreate):
|
||||
# Store path relative to media root
|
||||
import os
|
||||
|
||||
media_root = Path(os.environ.get("MEDIA_ROOT", "/app/media"))
|
||||
media_root = Path(os.environ.get("MEDIA_IN", "/app/media/in"))
|
||||
try:
|
||||
rel_path = str(path.relative_to(media_root))
|
||||
except ValueError:
|
||||
@@ -111,8 +111,8 @@ def scan_media_folder():
|
||||
|
||||
from mpr.media_assets.models import MediaAsset
|
||||
|
||||
# Get media root from environment
|
||||
media_root = os.environ.get("MEDIA_ROOT", "/app/media")
|
||||
# Get media input folder from environment
|
||||
media_root = os.environ.get("MEDIA_IN", "/app/media/in")
|
||||
media_path = Path(media_root)
|
||||
|
||||
if not media_path.exists():
|
||||
|
||||
@@ -30,9 +30,6 @@ def create_job(data: JobCreate):
|
||||
except MediaAsset.DoesNotExist:
|
||||
raise HTTPException(status_code=404, detail="Source asset not found")
|
||||
|
||||
if source.status != "ready":
|
||||
raise HTTPException(status_code=400, detail="Source asset is not ready")
|
||||
|
||||
# Get preset if specified
|
||||
preset = None
|
||||
preset_snapshot = {}
|
||||
@@ -64,27 +61,48 @@ def create_job(data: JobCreate):
|
||||
status_code=400, detail="Must specify preset_id or trim_start/trim_end"
|
||||
)
|
||||
|
||||
# Generate output filename
|
||||
# Generate output filename and path
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
output_filename = data.output_filename
|
||||
if not output_filename:
|
||||
from pathlib import Path
|
||||
|
||||
stem = Path(source.filename).stem
|
||||
ext = preset_snapshot.get("container", "mp4") if preset else "mp4"
|
||||
output_filename = f"{stem}_output.{ext}"
|
||||
|
||||
media_out = os.environ.get("MEDIA_OUT", "/app/media/out")
|
||||
output_path = str(Path(media_out) / output_filename)
|
||||
|
||||
media_in = os.environ.get("MEDIA_IN", "/app/media/in")
|
||||
source_path = str(Path(media_in) / source.file_path)
|
||||
|
||||
# Create job
|
||||
job = TranscodeJob.objects.create(
|
||||
source_asset=source,
|
||||
preset=preset,
|
||||
source_asset_id=source.id,
|
||||
preset_id=preset.id if preset else None,
|
||||
preset_snapshot=preset_snapshot,
|
||||
trim_start=data.trim_start,
|
||||
trim_end=data.trim_end,
|
||||
output_filename=output_filename,
|
||||
output_path=output_path,
|
||||
priority=data.priority or 0,
|
||||
)
|
||||
|
||||
# TODO: Submit job via gRPC
|
||||
# Dispatch to Celery
|
||||
from task.tasks import run_transcode_job
|
||||
|
||||
result = run_transcode_job.delay(
|
||||
job_id=str(job.id),
|
||||
source_path=source_path,
|
||||
output_path=output_path,
|
||||
preset=preset_snapshot or None,
|
||||
trim_start=data.trim_start,
|
||||
trim_end=data.trim_end,
|
||||
duration=source.duration,
|
||||
)
|
||||
job.celery_task_id = result.id
|
||||
job.save(update_fields=["celery_task_id"])
|
||||
|
||||
return job
|
||||
|
||||
|
||||
@@ -17,26 +17,19 @@ class JobStatus(str, Enum):
|
||||
|
||||
|
||||
class JobCreate(BaseSchema):
|
||||
"""JobCreate schema."""
|
||||
"""Client-facing job creation request."""
|
||||
|
||||
source_asset_id: UUID
|
||||
preset_id: Optional[UUID] = None
|
||||
preset_snapshot: Dict[str, Any]
|
||||
trim_start: Optional[float] = None
|
||||
trim_end: Optional[float] = None
|
||||
output_filename: str = ""
|
||||
output_path: Optional[str] = None
|
||||
output_asset_id: Optional[UUID] = None
|
||||
progress: float = 0.0
|
||||
current_frame: Optional[int] = None
|
||||
current_time: Optional[float] = None
|
||||
speed: Optional[str] = None
|
||||
celery_task_id: Optional[str] = None
|
||||
output_filename: Optional[str] = None
|
||||
priority: int = 0
|
||||
started_at: Optional[datetime] = None
|
||||
completed_at: Optional[datetime] = None
|
||||
|
||||
|
||||
class JobUpdate(BaseSchema):
|
||||
"""JobUpdate schema."""
|
||||
|
||||
source_asset_id: Optional[UUID] = None
|
||||
preset_id: Optional[UUID] = None
|
||||
preset_snapshot: Optional[Dict[str, Any]] = None
|
||||
@@ -56,8 +49,10 @@ class JobUpdate(BaseSchema):
|
||||
started_at: Optional[datetime] = None
|
||||
completed_at: Optional[datetime] = None
|
||||
|
||||
|
||||
class JobResponse(BaseSchema):
|
||||
"""JobResponse schema."""
|
||||
|
||||
id: UUID
|
||||
source_asset_id: UUID
|
||||
preset_id: Optional[UUID] = None
|
||||
|
||||
Reference in New Issue
Block a user