Files
yj_resume/main.py
2025-12-06 17:39:21 +08:00

59 lines
1.8 KiB
Python

from fastapi import FastAPI
import uvicorn
from fastapi import FastAPI, File, UploadFile, HTTPException
from typing import List
from service.file_service import check_and_create_directory, upload_and_save_file, fetch_files
from service import excel_service
from service.db_service import get_task_list
from fastapi.responses import FileResponse
import threading
from logging_config import LOGGING_CONFIG
import logging
logger = logging.getLogger(__name__)
app = FastAPI()
import concurrent.futures
executor = concurrent.futures.ThreadPoolExecutor(max_workers=10)
@app.get("/api/v1/hw")
def read_root():
return {"Hello": "World"}
# 上传文件并解析,解析是异步错误
@app.post("/upload_files_and_parse")
async def create_upload_files(files: List[UploadFile] = File(...)):
dir_id = check_and_create_directory(files)
if not dir_id:
return {"result": False, "code": 500, "message": "create directory failed"}
flag, message = await upload_and_save_file(dir_id, files)
logger.info(f"flag is {flag}")
if flag:
#flag, message = await fetch_files(dir_id)
executor.submit(fetch_files, dir_id)
return {"result": flag, "message": message, "task_id": dir_id}
@app.get("/export_task_data_to_excel")
def export_task_data_to_excel(task_id: str):
path_xx = excel_service.export_task_data_to_excel(task_id)
if not path_xx:
raise HTTPException(status_code=404, detail="file not found")
return FileResponse(
path=path_xx,
media_type="application/octet-stream", # 通用二进制流
filename=f"{task_id}.xlsx" # 浏览器下载时使用的文件名
)
@app.get("/parse_task_list")
def parse_task_list():
data = get_task_list()
return {"data": data, "code": 200, }
if __name__ == '__main__':
logger.info("start server")
uvicorn.run(app, host="0.0.0.0", port=3006)