38 lines
757 B
Python
38 lines
757 B
Python
from contextlib import asynccontextmanager
|
|
import datetime
|
|
|
|
from fastapi import FastAPI
|
|
import schedule
|
|
|
|
from . import models, router, schemas
|
|
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('/', response_model=schemas.Healthcheck)
|
|
def Healthcheck():
|
|
return {
|
|
"up_since": start_stamp
|
|
}
|