| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- """
- NER 服务主入口
- """
- from fastapi import FastAPI
- from fastapi.middleware.cors import CORSMiddleware
- from loguru import logger
- import sys
- from .config import settings
- from .routers import ner, relation
- from .models import HealthResponse
- # 配置日志
- logger.remove()
- logger.add(
- sys.stdout,
- format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
- level=settings.log_level
- )
- # 创建 FastAPI 应用
- app = FastAPI(
- title=settings.app_name,
- version=settings.app_version,
- description="NER(命名实体识别)服务,提供实体提取和关系抽取功能",
- docs_url="/docs",
- redoc_url="/redoc"
- )
- # CORS 中间件
- app.add_middleware(
- CORSMiddleware,
- allow_origins=["*"],
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
- # 注册路由
- app.include_router(ner.router, prefix="/ner", tags=["NER"])
- app.include_router(relation.router, prefix="/ner", tags=["Relation"])
- @app.get("/health", response_model=HealthResponse, tags=["Health"])
- async def health_check():
- """健康检查接口"""
- return HealthResponse(
- status="ok",
- version=settings.app_version,
- ner_model=settings.ner_model
- )
- @app.get("/", tags=["Root"])
- async def root():
- """根路径"""
- return {
- "service": settings.app_name,
- "version": settings.app_version,
- "status": "running"
- }
- @app.on_event("startup")
- async def startup_event():
- """启动事件"""
- logger.info(f"Starting {settings.app_name} v{settings.app_version}")
- logger.info(f"NER Model: {settings.ner_model}")
- logger.info(f"GPU Enabled: {settings.use_gpu}")
- @app.on_event("shutdown")
- async def shutdown_event():
- """关闭事件"""
- logger.info(f"Shutting down {settings.app_name}")
- if __name__ == "__main__":
- import uvicorn
- uvicorn.run(
- "app.main:app",
- host=settings.host,
- port=settings.port,
- reload=settings.debug
- )
|