# 1. 这里的顺序至关重要!必须在最顶端 import sys try: import asyncore except ImportError: import pyasyncore sys.modules['asyncore'] = pyasyncore import logging.config import uvicorn from fastapi import FastAPI from fastapi import HTTPException from fastapi.responses import JSONResponse 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 from dotenv import load_dotenv from starlette.middleware.cors import CORSMiddleware logging.config.dictConfig(LOGGER_CONFIG_DICT) logging.getLogger("pika").setLevel(logging.WARNING) logger = logging.getLogger(__name__) load_dotenv() def get_application() -> FastAPI: application = FastAPI( docs_url="/docs", redoc_url='/re-docs', openapi_url=f"/openapi.json", description=''' Base frame with FastAPI - Super Resolution API ''' ) application.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) application.middleware("http")(count_api_calls) application.include_router(router=router) return application app = get_application() @app.exception_handler(HTTPException) async def http_exception_handler(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=settings.PORT)