BrianChuan
完成階段三Vue 前端 - 個人 Log 檢視頁面開發與修正後端API錯誤
fb04509
Raw
History Blame Contribute Delete
1.85 kB
# app.py
# 主程式檔案 - 整合所有模組並啟動應用
# 此檔案負責初始化系統、載入模組和啟動服務
import os
from fastapi.middleware.cors import CORSMiddleware
# 載入配置和工具
from config import SERVER_CONFIG
from utils import setup_chinese_font, suppress_warnings
from models import load_models_and_data
from api import api_app
from ui import create_demo, custom_css
# 初始化系統
setup_chinese_font()
suppress_warnings()
load_models_and_data()
# 設定 CORS
api_app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
allow_credentials=False, # 避免與 allow_origins=["*"] 衝突
)
if __name__ == "__main__":
# 取得環境變數,HF 預設 PORT 通常是 7860,HOST 務必用 0.0.0.0
host = SERVER_CONFIG["host"]
port = SERVER_CONFIG["port"]
try:
import uvicorn
import gradio as gr
# 創建 Gradio 應用
demo = create_demo()
# 將 Gradio 掛載到 FastAPI (api_app)
# 這樣兩者會「合體」在同一個 Port 執行
app = gr.mount_gradio_app(api_app, demo, path="/")
print(f"🚀 數位保鏢系統啟動中:http://{host}:{port}")
# 唯一啟動點:交給 uvicorn 負責
# 不要再 except 裡面放 demo.launch(),避免自動跳埠到 7861
uvicorn.run(
api_app, # 執行掛載後的 FastAPI 主程式
host=host,
port=port,
proxy_headers=True, # 必須!讓 Gradio 知道它在 HF 的代理之後
forwarded_allow_ips="*", # 必須!允許 HF 轉發 IP 資訊
timeout_keep_alive=30, # 增加保持連線時間
log_level="info"
)
except Exception as e:
print(f"❌ 伺服器啟動嚴重錯誤: {e}")