app = FastAPI()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
def heavy_text_parser(file_id: int, db: Session):
# Парсинг файла, который длится 5 минут
parse_and_save(file_id, db)
@app.post("/upload")
async def upload_file(
background_tasks: BackgroundTasks,
db: Session = Depends(get_db)
):
file_id = save_file_to_db(db)
db.commit()
background_tasks.add_task(heavy_text_parser, file_id, db)
return {"status": "parsing started"}