Spaces:
Sleeping
Sleeping
File size: 1,888 Bytes
6cbca40 c0a7f25 61e4b1e 5a412ce 64c08d9 85fa45c 6cbca40 c0a7f25 61e4b1e 5a412ce 64c08d9 85fa45c 6cbca40 85fa45c 5a412ce |
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 |
from fastapi import FastAPI, APIRouter
from fastapi.middleware.cors import CORSMiddleware
from src.apis.routes.user_route import router as router_user
from src.apis.routes.chat_route import router as router_chat
from src.apis.routes.lesson_route import router as router_lesson
from src.apis.routes.evaluation_route import router as router_evaluation
from src.apis.routes.pronunciation_route import router as router_pronunciation
from src.apis.routes.speaking_route import router as router_speaking
from src.apis.routes.ipa_route import router as router_ipa
from loguru import logger
api_router = APIRouter(prefix="/api")
api_router.include_router(router_user)
api_router.include_router(router_chat)
api_router.include_router(router_lesson)
api_router.include_router(router_evaluation)
api_router.include_router(router_pronunciation)
api_router.include_router(router_speaking)
api_router.include_router(router_ipa)
def create_app():
app = FastAPI(docs_url="/", title="API")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.on_event("startup")
async def startup_event():
"""Pre-initialize assessor on server startup for better performance"""
try:
logger.info("Pre-initializing ProductionPronunciationAssessor...")
from src.apis.routes.speaking_route import get_assessor
from src.apis.routes.ipa_route import get_assessor as get_ipa_assessor
# Pre-initialize both assessors (they share the same singleton)
get_assessor()
get_ipa_assessor()
logger.info("ProductionPronunciationAssessor pre-initialization completed!")
except Exception as e:
logger.error(f"Failed to pre-initialize assessor: {e}")
return app
|