Chandima Prabhath
Refactor Redis connection handling and update Dockerfile for environment variable support
f7bd5c7
raw
history blame
1.17 kB
import os
import logging
import shutil
from redis import from_url
from ..config import RedisConfig
from rq import Queue
from pathlib import Path
from typing import Optional
from .ffmpeg import FFmpegEncoder
from ..config import EncodingConfig
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
q = Queue(connection=RedisConfig.get_connection(), default_timeout=3600)
def update_job_progress(job_id: str, progress: float):
RedisConfig.get_connection().hset(f"job:{job_id}", "progress", progress)
def encode_video_task(job_id: str, input_path: str) -> Optional[str]:
try:
output_dir = os.path.join(EncodingConfig.TEMP_DIR, job_id)
encoder = FFmpegEncoder(input_path, output_dir)
update_job_progress(job_id, 0.1)
master_playlist = encoder.encode()
update_job_progress(job_id, 1.0)
return master_playlist
except Exception as e:
logger.error(f"Encoding failed for job {job_id}: {str(e)}")
update_job_progress(job_id, -1.0)
raise
finally:
# Cleanup temporary files after 1 hour
pass # Implement retention policy as needed