Spaces:
Sleeping
Sleeping
import asyncio | |
import uuid | |
from fastapi import APIRouter, BackgroundTasks, HTTPException | |
from app.api.routes import TextSummaryRequest | |
from app.services.summariser import SummariserService | |
router = APIRouter() | |
# In-memory storage for task results (use Redis or a database in production) | |
task_results = {} | |
async def process_summarization(task_id, request): | |
try: | |
summariser = SummariserService() | |
summary = summariser.summarise( | |
text=request.text, | |
max_length=request.max_length, | |
min_length=request.min_length, | |
do_sample=request.do_sample, | |
temperature=request.temperature | |
) | |
task_results[task_id] = { | |
"status": "completed", | |
"result": { | |
"original_text_length": len(request.text), | |
"summary": summary, | |
"summary_length": len(summary), | |
"source_type": "text" | |
} | |
} | |
except Exception as e: | |
task_results[task_id] = { | |
"status": "failed", | |
"error": str(e) | |
} | |
async def summarise_text_async(request: TextSummaryRequest, background_tasks: BackgroundTasks): | |
task_id = str(uuid.uuid4()) | |
task_results[task_id] = {"status": "processing"} | |
background_tasks.add_task(process_summarization, task_id, request) | |
return {"task_id": task_id, "status": "processing"} | |
async def get_summary_status(task_id: str): | |
if task_id not in task_results: | |
raise HTTPException(status_code=404, detail="Task not found") | |
return task_results[task_id] | |