72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
import os
|
|
from fastapi import FastAPI
|
|
from fastapi.staticfiles import StaticFiles
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.security import OAuth2PasswordBearer
|
|
from jose import JWTError, jwt
|
|
from datetime import datetime, timedelta
|
|
import json
|
|
from contextlib import asynccontextmanager
|
|
|
|
from dotenv import load_dotenv
|
|
import uvicorn
|
|
|
|
# 加载 .env 文件中的环境变量
|
|
load_dotenv() # 默认加载项目根目录的 .env 文件
|
|
|
|
from app.asr_service import asr_router
|
|
from app.monitor_service import monitor_router
|
|
from app.tts_service import tts_router,tts_lifespan
|
|
from app.login_service import login_router
|
|
from app.chat_service import chat_router
|
|
from app.payment_service import payment_router
|
|
from app.system_admin import system_admin_router
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
"""生命周期管理"""
|
|
# 服务启动初始化
|
|
print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
|
print(" ASR & Monitor Service Start")
|
|
print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
|
# 启动TTS路由器的生命周期
|
|
tts_lifespan_ctx = tts_lifespan(app)
|
|
await tts_lifespan_ctx.__aenter__()
|
|
yield
|
|
# 关闭TTS路由器的生命周期
|
|
await tts_lifespan_ctx.__aexit__(None, None, None)
|
|
# 服务停止清理
|
|
print("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
|
print(" Service Stopped Cleanly")
|
|
print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
|
|
|
|
|
# 创建应用实例
|
|
app = FastAPI(lifespan=lifespan)
|
|
|
|
# 配置CORS
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"], # 允许所有来源,也可以指定具体的域名,例如 ["https://example.com"]
|
|
allow_credentials=True, # 是否允许发送 cookies
|
|
allow_methods=["*"], # 允许所有方法,也可以指定具体的方法,例如 ["GET", "POST"]
|
|
allow_headers=["*"], # 允许所有头信息,也可以指定具体的头信息
|
|
expose_headers=["Content-Range", "Content-Length"] # 关键添加
|
|
)
|
|
|
|
# 挂载子路由
|
|
app.include_router(asr_router, prefix="/asr")
|
|
app.include_router(monitor_router, prefix="/monitor")
|
|
app.include_router(tts_router, prefix="/tts")
|
|
app.include_router(login_router, prefix="/auth")
|
|
app.include_router(chat_router, prefix="/chat")
|
|
app.include_router(payment_router, prefix="/payment")
|
|
app.include_router(system_admin_router,prefix="/system_admin")
|
|
|
|
# 挂载静态文件(可选)
|
|
# app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
uvicorn.run("app.main:app", host="0.0.0.0", port=9580) |