I am building a Djano app that processes image in a Celery task. A post inside the view method handles the input and triggers the task. Inside the task, I create a model instance based on the processed image. In the same view, I wanted to return a response of the de-serialization of the model instance. What is the best way to throw this response? Should a frontend expect this on another url? How can I signal my app that the model instance is ready to be served?
# models.py
class Image(models.Model):
name = models.CharField(max_length=50, blank=True)
...
# tasks.py
@shared_task
def long_running_function(user, data):
image = Image.objects.create()
...
return image # ?
# views.py
class RequestImage(APIView):
def post(self, request):
...
image = celery_task_example.delay(
request.user.id,
request.data
)
# if image is ready
serializer = ImageSerializer(image)
return Response(serializer.data)