Spaces:
Running
Running
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(current_dir) | |
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 | |
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": "AI Model", | |
"description": "AI model endpoints for prediction and embedding", | |
}, | |
], | |
) | |
# Include Routers | |
app.include_router(health.router, tags=["Health"]) | |
app.include_router(auth.router, tags=["Authentication"]) | |
app.include_router(predict.router, tags=["AI Model"]) | |
async def root(): | |
return {"message": "Hello World"} | |
if __name__ == "__main__": | |
create_directories() | |
uvicorn.run(app, host="0.0.0.0", port=8000) | |