meisaicheck-api / main.py
vumichien's picture
change logic from sentence name to representative name
01ae535
raw
history blame
1.62 kB
import sys
import os
from fastapi import FastAPI
import uvicorn
import traceback
from contextlib import asynccontextmanager
current_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.join(current_dir, "meisai-check-ai"))
from routes import auth, predict, health
from services.sentence_transformer_service import sentence_transformer_service
from utils import create_directories
@asynccontextmanager
async def lifespan(app: FastAPI):
"""Lifespan context manager for startup and shutdown events"""
try:
# Load models and data ONCE at startup
sentence_transformer_service.load_model_data()
except Exception as e:
print(f"Error during startup: {e}")
traceback.print_exc()
yield # App chạy tại đây
print("Shutting down application")
# Initialize FastAPI
app = FastAPI(
title="MeisaiCheck API",
description="API for MeisaiCheck AI System",
version="1.0",
lifespan=lifespan,
openapi_tags=[
{"name": "Health", "description": "Health check endpoints"},
{"name": "Authentication", "description": "User authentication and token management"},
{"name": "Prediction", "description": "Predict and process CSV files"},
]
)
# Include Routers
app.include_router(health.router, tags=["Health"])
app.include_router(auth.router, tags=["Authentication"])
app.include_router(predict.router, tags=["Prediction"])
@app.get("/", tags=["Health"])
async def root():
return {"message": "Hello World"}
if __name__ == "__main__":
create_directories()
uvicorn.run(app, host="0.0.0.0", port=8000)