diff --git a/services/insta-render/main.py b/services/insta-render/main.py new file mode 100644 index 0000000..0d93b76 --- /dev/null +++ b/services/insta-render/main.py @@ -0,0 +1,41 @@ +"""insta-render FastAPI entry — health + lifespan (Browser pool + worker loop).""" +from __future__ import annotations + +import asyncio +import logging +from contextlib import asynccontextmanager + +from fastapi import FastAPI + +import card_renderer +import worker + +logging.basicConfig(level=logging.INFO, format="%(asctime)s %(name)s %(levelname)s %(message)s") +logger = logging.getLogger(__name__) + + +@asynccontextmanager +async def lifespan(app: FastAPI): + # Browser pool 초기화 (Chromium launch) + await card_renderer.init_browser() + # 큐 워커 백그라운드 시작 + worker_task = asyncio.create_task(worker.worker_loop()) + logger.info("insta-render lifespan 시작") + try: + yield + finally: + worker_task.cancel() + try: + await worker_task + except asyncio.CancelledError: + pass + await card_renderer.shutdown_browser() + logger.info("insta-render lifespan 종료") + + +app = FastAPI(lifespan=lifespan) + + +@app.get("/health") +def health(): + return {"ok": True, "service": "insta-render"}