How to get return from celery task in Django to view?
I am processing a large file using celery task in my Django app. I have an APIView in which when it receives a POST, it will trigger the process. In the celery task, I create a model instance and save. How am I going to receive it back to the APIView so that I can serialize the instance.
For simplicity. This would be my APIVIew.
class RequestFile(APIView):
def post(self, request):
...
image = long_running_function.delay(
request.user.id,
request.data
)
... # how to get the return from the long_running_function?
# return model serializer
In my celery task. I am creating a model instance that I would like to de-serialize in my view.
class Image(models.Model):
name = models.CharField(max_length=50, blank=True)
...
@shared_task
def long_running_function(user, data):
image = Image.objects.create()
...
return image # can I return the model instance here?
Is there a function where I can know when the function is done, and return the model instance or the key/id of the instance created?