diff --git a/backend/app/tasks/render_accessible_video.py b/backend/app/tasks/render_accessible_video.py index 087b1d9..f322caf 100644 --- a/backend/app/tasks/render_accessible_video.py +++ b/backend/app/tasks/render_accessible_video.py @@ -91,7 +91,9 @@ async def _async_render_accessible_video(job_id: str, language: str): message=f"Rendering accessible video for {language.upper()}" ) - with tempfile.TemporaryDirectory() as temp_dir: + # Use TMPDIR env var if set (for shared volume between workers) + temp_base = os.environ.get('TMPDIR', None) + with tempfile.TemporaryDirectory(dir=temp_base) as temp_dir: # 1. Download source video from GCS source_video_gcs = job_doc["source"]["gcs_uri"] source_blob_path = source_video_gcs.replace(f"gs://{settings.gcs_bucket}/", "") diff --git a/docker-compose.yml b/docker-compose.yml index 6934907..4c140eb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -151,7 +151,10 @@ services: target: worker container_name: accessible-video-worker restart: unless-stopped - command: ["celery", "-A", "celery_worker", "worker", "-Q", "default,ingest,notify,render", "--loglevel=info", "--concurrency=4"] + user: root + command: > + sh -c "chown -R app:app /shared-tmp && + su app -c 'celery -A celery_worker worker -Q default,ingest,notify,render --loglevel=info --concurrency=4'" depends_on: mongodb: condition: service_healthy @@ -229,7 +232,10 @@ services: target: worker container_name: accessible-video-ffmpeg-worker restart: unless-stopped - command: ["celery", "-A", "celery_worker", "worker", "-Q", "ffmpeg", "--loglevel=info", "--concurrency=1"] + user: root + command: > + sh -c "chown -R app:app /shared-tmp 2>/dev/null || true && + su app -c 'celery -A celery_worker worker -Q ffmpeg --loglevel=info --concurrency=1'" depends_on: mongodb: condition: service_healthy