26 lines
896 B
Python
26 lines
896 B
Python
from fastapi import APIRouter, status
|
|
from app.schemas.item_schema import Item
|
|
from app.services import task_service
|
|
|
|
router = APIRouter(
|
|
prefix="/tasks",
|
|
tags=["Tasks"],
|
|
)
|
|
|
|
@router.post("/process_item", status_code=status.HTTP_202_ACCEPTED)
|
|
def process_item_task(item: Item):
|
|
"""
|
|
This endpoint receives an item, and instead of processing it directly,
|
|
it sends a task to the Celery queue via the task service.
|
|
"""
|
|
task_id = task_service.create_processing_task(item.dict())
|
|
return {"message": "Task accepted. The item is being processed in the background.", "task_id": task_id}
|
|
|
|
@router.get("/result/{task_id}")
|
|
def get_task_result_controller(task_id: str):
|
|
"""
|
|
This endpoint allows clients to check the status and result of a
|
|
previously submitted task using its ID, by calling the task service.
|
|
"""
|
|
return task_service.get_task_result(task_id)
|