21 lines
661 B

from celery.result import AsyncResult
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
class TaskStatus(APIView):
permission_classes = (IsAuthenticated,)
def get(self, request, *args, **kwargs):
task = AsyncResult(kwargs["task_id"])
ready = task.ready()
error = ready and not task.successful()
return Response(
{
"ready": ready,
"result": task.result if ready and not error else None,
"error": {"text": str(task.result)} if error else None,
}
)