31 lines
944 B
Python
31 lines
944 B
Python
from celery.result import AsyncResult
|
|
from django.contrib.auth.decorators import login_required
|
|
from rest_framework.decorators import api_view
|
|
from rest_framework.response import Response
|
|
|
|
from console.serializers import CelerySerializer
|
|
from core.decorators import log_url
|
|
|
|
|
|
@log_url
|
|
@login_required
|
|
@api_view(('GET',))
|
|
def check_task_state(request, task_id):
|
|
""" Check that celery task is finished
|
|
:param task_id: Celery task ID
|
|
"""
|
|
result = AsyncResult(task_id)
|
|
if result.successful():
|
|
serializer = CelerySerializer(
|
|
data={'task_id': task_id,
|
|
'finished': result.successful(),
|
|
'result': result.get()
|
|
})
|
|
else:
|
|
serializer = CelerySerializer(
|
|
data={'task_id': task_id,
|
|
'finished': result.successful(),
|
|
'result': result.get()})
|
|
|
|
serializer.is_valid()
|
|
return Response(serializer.data)
|