mp_message/main.py

58 lines
1.3 KiB
Python
Raw Normal View History

2023-12-10 13:04:10 +03:00
from datetime import datetime, timezone
import uvicorn
from fastapi import FastAPI, WebSocket
from starlette.websockets import WebSocketDisconnect
from core.ws.handlers import connection_manager
2023-12-10 13:04:10 +03:00
from loguru import logger
from starlette.middleware.cors import CORSMiddleware
from config import Config
from core.api import router as api_router
from core.errors.errors import CustomExceptionHandler
2023-12-10 13:04:10 +03:00
app = FastAPI()
origins = [
"*"
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Including routers
app.include_router(api_router)
@app.on_event('startup')
async def on_startup():
logger.success('Application startup complete at {time}', time=datetime.now(tz=timezone.utc))
@app.exception_handler(CustomExceptionHandler)
async def custom_exception_handler(_, exc):
return exc.result()
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await connection_manager.connect(websocket)
try:
while True:
data = await websocket.receive_text()
await connection_manager.route_message(data, websocket)
except WebSocketDisconnect:
connection_manager.disconnect(websocket)
2023-12-10 13:04:10 +03:00
if __name__ == '__main__':
uvicorn.run('main:app', host=str(Config.host), port=Config.port, reload=True)