Как получить возврат из задачи 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?
Есть ли функция, в которой я могу узнать, когда функция завершена, и вернуть экземпляр модели или ключ/ид созданного экземпляра?