- Frontend: rewrite Home.vue to match backend POST /jobs API (remove single-stage options) - Frontend: add Monitor page (/monitor) for queue and job monitoring - Frontend: add job history with localStorage tracking (per-browser) - Frontend: fix Nginx proxy rewrite (/api -> /) and add 500MB upload limit - Backend: add MinIO storage support (STORAGE_BACKEND=minio) alongside local mode - Backend: add GET /queues/stats API for queue monitoring - Backend: fix download handler for MinIO (buffer mode for Node 18 compat) - Workers: add S3/MinIO download/upload in consumer.py with isolated temp dirs - Workers: add s3_storage.py helper with lifecycle rule (7-day TTL) - Docker: add docker-compose.yml with all services (web, scheduler, redis, workers) - Docker: ports mapped to 9500 (web) and 9501 (scheduler) - Config: add .env to .gitignore to protect secrets Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
"""
|
|
ONNX Worker — Redis Stream queue consumer entry point.
|
|
|
|
Usage:
|
|
python -m services.workers.onnx.worker
|
|
# or
|
|
WORKER_MODE=stub python -m services.workers.onnx.worker
|
|
"""
|
|
|
|
import logging
|
|
import os
|
|
import sys
|
|
|
|
# Ensure project root is in sys.path
|
|
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", ".."))
|
|
if PROJECT_ROOT not in sys.path:
|
|
sys.path.insert(0, PROJECT_ROOT)
|
|
|
|
from services.workers.consumer import WorkerConsumer
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s [%(name)s] %(levelname)s %(message)s",
|
|
)
|
|
logger = logging.getLogger("onnx-worker")
|
|
|
|
|
|
def get_process_fn():
|
|
"""Return the appropriate core function based on WORKER_MODE."""
|
|
mode = os.environ.get("WORKER_MODE", "real").lower()
|
|
|
|
if mode == "stub":
|
|
from services.workers.stubs import process_onnx_core_stub
|
|
logger.info("Running in STUB mode")
|
|
return process_onnx_core_stub
|
|
else:
|
|
from services.workers.onnx.core import process_onnx_core
|
|
logger.info("Running in REAL mode")
|
|
return process_onnx_core
|
|
|
|
|
|
def main():
|
|
process_fn = get_process_fn()
|
|
|
|
consumer = WorkerConsumer(
|
|
stage="onnx",
|
|
process_fn=process_fn,
|
|
queue_name="queue:onnx",
|
|
group_name="onnx-workers",
|
|
)
|
|
consumer.run()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|