Как лучше всего возвращать результат асинхронной задачи в представления Django?

Я создаю приложение Djano, которое обрабатывает изображение в задаче Celery. Пост внутри метода представления обрабатывает ввод и запускает задачу. Внутри задачи я создаю экземпляр модели на основе обработанного изображения. В том же представлении я хочу вернуть ответ де-сериализации экземпляра модели. Каков наилучший способ передать этот ответ? Должен ли фронтенд ожидать этого по другому url? Как я могу сообщить своему приложению, что экземпляр модели готов к обслуживанию?

# 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)
Вернуться на верх