48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import uvicorn
|
|
import routers
|
|
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi import Request, HTTPException, status
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from middlewares.token_middleware import AuthHeaderMiddleware
|
|
from application.create_file import create_app
|
|
from api_objects.errors.errors_dictionary import ErrorHandlers
|
|
from prometheus_fastapi_instrumentator import Instrumentator
|
|
|
|
app = create_app(routers=routers)
|
|
Instrumentator().instrument(app=app).expose(app=app)
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
**{
|
|
"allow_origins": ["*"],
|
|
"allow_credentials": True,
|
|
"allow_methods": ["*"],
|
|
"allow_headers": ["*"],
|
|
},
|
|
)
|
|
app.add_middleware(AuthHeaderMiddleware)
|
|
|
|
# Initialize error handlers
|
|
error_handlers = ErrorHandlers.create(
|
|
requests=Request,
|
|
exceptions=HTTPException,
|
|
response_model=JSONResponse,
|
|
status=status,
|
|
)
|
|
|
|
# Register error handlers with bound methods
|
|
app.add_exception_handler(HTTPException, error_handlers.exception_handler_http)
|
|
app.add_exception_handler(Exception, error_handlers.exception_handler_exception)
|
|
|
|
if __name__ == "__main__":
|
|
uvicorn_config = {
|
|
"app": "app:app",
|
|
"host": "0.0.0.0",
|
|
"port": 41575,
|
|
"log_level": "info",
|
|
"reload": True,
|
|
}
|
|
uvicorn.Server(uvicorn.Config(**uvicorn_config)).run()
|