Make audio separator async with Firestore + GCS (#280)
* feat: add Firestore-backed job status store Introduces FirestoreJobStore to replace the in-memory job_status_store dict, enabling any Cloud Run instance to read/write job status for multi-instance GPU scaling. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add GCS output store for cross-instance file serving Implements GCSOutputStore to upload separation results to GCS so any Cloud Run instance can serve download requests, replacing local disk storage. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Make /separate endpoint async with GPU semaphore and external stores Convert the /separate endpoint from synchronous (await) to fire-and-forget pattern so it returns immediately while separation runs in background. Replace in-memory job_status_store with Firestore reads/writes and local file downloads with GCS, enabling cross-instance status polling and file serving. Add GPU semaphore to serialize concurrent separation requests on a single instance. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * cleanup: remove dead job_status_store dict Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: reduce POST timeout from 300s to 60s (server is now async) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add google-cloud-firestore to Dockerfile for async job store Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: lazy imports + add GCP test deps for CI compatibility Move google.cloud imports inside __init__ methods so modules can be imported without the packages installed. Add google-cloud-firestore and google-cloud-storage to dev dependencies so CI has them available. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: update poetry.lock for GCP test dependencies Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: skip deploy_cloudrun tests when uvicorn not installed The TestLazyInit tests import deploy_cloudrun.py which requires uvicorn and fastapi - server-only dependencies not in the test environment. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
A
Andrew Beveridge ☄️ committed
349ba98c85645a112f257fcb59861d519a1b2316
Parent: db43a42
Committed by GitHub <noreply@github.com>
on 3/26/2026, 4:41:49 AM