Как получить возврат из задачи celery в Django в представление?

Я обрабатываю большой файл с помощью задачи celery в моем приложении Django. У меня есть APIView, в котором, когда он получает POST, он запускает процесс. В задаче celery я создаю экземпляр модели и сохраняю. Как я собираюсь получить его обратно в APIView, чтобы я мог сериализовать экземпляр.

Для простоты. Это будет мой 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

В моей задаче celery. Я создаю экземпляр модели, который я хотел бы де-сериализовать в моем представлении.

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?

Есть ли функция, в которой я могу узнать, когда функция завершена, и вернуть экземпляр модели или ключ/ид созданного экземпляра?

Вернуться на верх