Files
yj_resume/main.py

59 lines
1.8 KiB
Python
Raw Normal View History

2025-12-05 11:40:41 +08:00
from fastapi import FastAPI
import uvicorn
from fastapi import FastAPI, File, UploadFile, HTTPException
from typing import List
2025-12-06 17:39:21 +08:00
from service.file_service import check_and_create_directory, upload_and_save_file, fetch_files
2025-12-06 11:14:45 +08:00
from service import excel_service
2025-12-06 16:23:21 +08:00
from service.db_service import get_task_list
from fastapi.responses import FileResponse
2025-12-06 16:44:53 +08:00
import threading
from logging_config import LOGGING_CONFIG
import logging
logger = logging.getLogger(__name__)
2025-12-05 11:40:41 +08:00
app = FastAPI()
2025-12-06 17:39:21 +08:00
import concurrent.futures
executor = concurrent.futures.ThreadPoolExecutor(max_workers=10)
2025-12-05 11:40:41 +08:00
@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"}
2025-12-06 17:39:21 +08:00
flag, message = await upload_and_save_file(dir_id, files)
2025-12-06 16:44:53 +08:00
logger.info(f"flag is {flag}")
if flag:
2025-12-06 17:39:21 +08:00
#flag, message = await fetch_files(dir_id)
executor.submit(fetch_files, dir_id)
return {"result": flag, "message": message, "task_id": dir_id}
2025-12-05 11:40:41 +08:00
2025-12-06 11:14:45 +08:00
@app.get("/export_task_data_to_excel")
def export_task_data_to_excel(task_id: str):
2025-12-06 16:23:21 +08:00
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, }
2025-12-06 11:14:45 +08:00
2025-12-05 11:40:41 +08:00
if __name__ == '__main__':
2025-12-06 17:39:21 +08:00
logger.info("start server")
uvicorn.run(app, host="0.0.0.0", port=3006)