Spaces:
Running
Running
File size: 1,765 Bytes
0187d9a b77c0a2 0187d9a fe6002b 0187d9a de4b55b 0187d9a b77c0a2 bf7f5ee fe6002b b77c0a2 fe6002b b77c0a2 0187d9a fe6002b b77c0a2 8600f2c b77c0a2 fe6002b b77c0a2 668c994 0187d9a b77c0a2 0187d9a b77c0a2 0187d9a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
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
@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": "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"])
@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)
|