Как сериализовать данные из celery в django rest framework
Я использую Celery - Redis - Django rest framework (DRF). Что я пытаюсь сделать:
- DRF передает URL в задачу/функцию celery
- Celery затем получает это изображение и применяет логику
- Celery отправляет идентификатор нового созданного объекта
- DRF извлекает экземпляр из сохраненного объекта, сериализует и отправляет его в react (проблема в этом шаге)
Я не могу распаковать и сериализовать сообщение из celery, чтобы я мог отправить его в качестве ответа.
Вот мой код:
Вот набор представлений
class TestSet(viewsets.ModelViewSet):
queryset = Test.objects.all()
serializer_class = WebsiteURLSerializer
def create(self, request, *args, **kwargs):
serializer = WebsiteURLSerializer(data=request.data)
if serializer.is_valid():
url_site= serializer.validated_data['url']
result = test_call.delay(url_site)
result_unpacked = WebsiteURLSerializer(ModelName.objects.filter(pk=result.get()))
#the below line seems return an empty response
return Response(result_unpacked.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@shared_task(name="values")
def test_call(url_image):
model_instance = ModelName.objects.create()
..some logic
model_instance.save()
return model_instance.id
Ошибка была в следующей строке
From:
result_unpacked = WebsiteURLSerializer(ModelName.objects.filter(pk=result.get()))
To:
result_unpacked = WebsiteURLSerializer(ModelName.objects.get(pk=result.get()))