File size: 1,661 Bytes
124b5b5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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)
        }

@router.post("/summarise-async")
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"}

@router.get("/summary-status/{task_id}")
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]