import asyncio from typing import List from fastapi import UploadFile from app.model.FileModel import FileSaveService from app.model.KnowledgeDoc import KnowledgeDocModel, KnowledgeDocService from app.utils.db_utils import AsyncSessionDep, async_session class KnowledgeService: def __init__(self): pass # 为每个文件创建独立的 session 进行文件保存 async def save_file_with_new_session(self, file: UploadFile): # 这里需要根据您的数据库配置创建新的 session # 假设您有一个 session factory async with async_session() as session: return await FileSaveService.saveFile(session=session, file=file, filename=file.filename, file_record={}) async def save_knowledge_doc_list(self, session: AsyncSessionDep, file_dict_list: List[dict], kb_code: str): # 先插入文档对象 tobe_insert_kd_list = [ KnowledgeDocModel(id=file_dict["id"], name=file_dict["name"], path=file_dict["path"], parent_code=kb_code, status="process").model_dump() for file_dict in file_dict_list ] insert_cls_list: List[KnowledgeDocModel] = await KnowledgeDocService.batch_insert(session=session, row_dict_list=tobe_insert_kd_list) return insert_cls_list async def process_file_dict(self, file_dict: dict, kb_code: str): print("process start", file_dict['name']) await asyncio.sleep(3) print("process end", file_dict['name']) return {} knowledge_service = KnowledgeService()