56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
import logging.config
|
|
from http.client import HTTPException
|
|
from fastapi.responses import JSONResponse
|
|
from fastapi import FastAPI, HTTPException, Request
|
|
|
|
import uvicorn
|
|
from fastapi import FastAPI
|
|
|
|
from app.api.api_route import router
|
|
from app.core.config import settings
|
|
from app.core.record_api_count import count_api_calls
|
|
from app.schemas.response_template import ResponseModel
|
|
from logging_env import LOGGER_CONFIG_DICT
|
|
|
|
logging.config.dictConfig(LOGGER_CONFIG_DICT)
|
|
logging.getLogger("pika").setLevel(logging.WARNING)
|
|
|
|
from starlette.middleware.cors import CORSMiddleware
|
|
|
|
|
|
def get_application() -> FastAPI:
|
|
application = FastAPI(
|
|
title=settings.PROJECT_NAME, docs_url="/docs", redoc_url='/re-docs',
|
|
openapi_url=f"{settings.API_PREFIX}/openapi.json",
|
|
description='''
|
|
Base frame with FastAPI
|
|
- Super Resolution API
|
|
|
|
'''
|
|
)
|
|
application.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
application.middleware("http")(count_api_calls)
|
|
application.include_router(router=router, prefix=settings.API_PREFIX)
|
|
return application
|
|
|
|
|
|
app = get_application()
|
|
|
|
|
|
@app.exception_handler(HTTPException)
|
|
async def http_exception_handler(request: Request, exc: HTTPException):
|
|
return JSONResponse(
|
|
status_code=exc.status_code,
|
|
content=ResponseModel(code=exc.status_code, msg=exc.detail, data=exc.detail).dict()
|
|
)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|