Files
mars_toolkit/main.py
2025-01-06 14:54:41 +08:00

60 lines
1.5 KiB
Python

"""
Author: Yutang LI
Institution: SIAT-MIC
Contact: yt.li2@siat.ac.cn
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware import Middleware
from starlette.middleware.base import BaseHTTPMiddleware
from router.mp_router import router as material_router
from router.oqmd_router import router as oqmd_router
from router.fairchem_router import router as fairchem_router
from error_handlers import (
handle_general_error,
handle_http_error,
handle_validation_error
)
from utils import setup_logging
from router.fairchem_router import init_model
# 初始化日志配置
setup_logging()
# 创建中间件列表
middleware = [
Middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
]
app = FastAPI(middleware=middleware)
@app.on_event("startup")
async def startup_event():
"""应用启动时初始化模型"""
init_model()
# 注册路由
app.include_router(material_router)
app.include_router(oqmd_router)
app.include_router(fairchem_router)
# 添加全局异常处理
@app.exception_handler(Exception)
async def global_exception_handler(request, exc):
return handle_general_error(exc)
@app.exception_handler(ValueError)
async def validation_exception_handler(request, exc):
return handle_validation_error(exc)
@app.exception_handler(ConnectionError)
async def http_exception_handler(request, exc):
return handle_http_error(exc)