SCMBench / app.py
zeisel's picture
Update app.py
3b357b2 verified
# app.py (主入口文件)
import os
os.system("pip uninstall -y gradio")
os.system("pip install gradio==3.50.2")
from fastapi import FastAPI, File, UploadFile
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
import gradio as gr
import uvicorn
import aiofiles
from typing import List
import service
# ---------- 原 controller.py 的核心逻辑 ----------
uploadPath = "./data/latents/"
# 初始化 FastAPP
app = FastAPI()
# CORS 配置(保持与 controller.py 一致)
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:5173"], # 前端开发地址
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# ---------- 原 controller.py 的路由 ----------
@app.get("/dataList/{datatype}")
async def read_data(datatype):
return service.getALlData() # 示例数据,替换为实际 service 调用
# 定义带路径参数的 GET 请求处理函数
@app.get("/details/{name}")
async def read_item(name: str = None):
data = service.getListByName("integration_accuracy.csv", name)
return data
@app.post("/upload")
async def upload_files(files: List[UploadFile] = File(...)):
for file in files:
save_path = os.path.join(uploadPath, file.filename)
try:
async with aiofiles.open(save_path, 'wb') as out_file:
content = await file.read()
await out_file.write(content)
except Exception as e:
return {"message": f"Error: {e}"}
finally:
await file.close()
return {"success": True, "message": "Files uploaded"}
# 挂载 Vue3 前端静态文件(部署时需要)
app.mount("/", StaticFiles(directory="static", html=True), name="static")
# ---------- 集成 Gradio 接口 ----------
def gradio_predict(text):
return f"Processed: {text}"
gradio_ui = gr.Interface(
fn=gradio_predict,
inputs=gr.Textbox(label="输入文本"),
outputs=gr.Textbox(label="处理结果"),
title="Gradio 交互界面"
)
# 将 Gradio 挂载到 /gradio 路径
app = gr.mount_gradio_app(app, gradio_ui, path="/gradio")
# ---------- 启动配置 ----------
if __name__ == "__main__":
# Hugging Face Spaces 使用 PORT 环境变量
port = int(os.getenv("PORT", 7860))
uvicorn.run(app, host="0.0.0.0", port=port)