import asyncio import logging from contextlib import asynccontextmanager from fastapi import FastAPI from api.db.connection import wait_for_postgres, init_db from api.db.job import mark_interrupted from api.lib import jobqueue from api.route import app_settings, default, jobs, llm, pipeline, sections, videos logging.basicConfig( level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s: %(message)s", ) @asynccontextmanager async def lifespan(app: FastAPI): await wait_for_postgres() await init_db() await mark_interrupted() worker_task = asyncio.create_task(jobqueue.worker()) yield worker_task.cancel() app = FastAPI(title="LLM-infa API", version="0.4.0", lifespan=lifespan) app.include_router(default.router) app.include_router(pipeline.router) app.include_router(jobs.router) app.include_router(videos.router) app.include_router(sections.router) app.include_router(app_settings.router) app.include_router(llm.router)