from contextlib import asynccontextmanager import datetime from fastapi import FastAPI import schedule from . import models, router from .database import engine from .scheduler import run_continuously, run_threaded from .job import job from .config import REFETCH_PERIOD_H models.Base.metadata.create_all(bind=engine) start_stamp = datetime.datetime.now() async def lifespan(app: FastAPI): schedule.every(REFETCH_PERIOD_H).hours.do(job) stop_run_continuously = run_continuously() run_threaded(job) yield stop_run_continuously() app = FastAPI(lifespan=lifespan) app.include_router(router.router) @app.get('/') def root(): return { "up_since": start_stamp }