Как кодировать и декодировать изображение в JSON для celery и django

Я пытаюсь применить некоторую логику к изображению, полученному из вызова API. Ниже приведен код из Django Rest Framework. Я пытаюсь сериализовать изображение, чтобы отправить его в задачу celery, но у меня не получается правильно сериализовать и десериализовать изображение.

serializer.validated_data это <InMemoryUploadedFile: 1.png (image/png)>)])

serializer.validated_data['picture'].file это <_io.BytesIO object at 0x7f1375e1edb0>

if serializer.is_valid():

    image_uploaded = serializer.validated_data['picture'].file

    json_data = base64.b64encode(image_uploaded.read()).decode('ascii')
    call = test_func.delay(json_data)
    results = TestSerializer(TestModel.objects.get(pk=call.get()))



@shared_task()
def test_func(json_data):

      img_temp = asarray(Image.open(json_data))
      ....some logic
       return model_instance.id
      

Я получаю следующую ошибку на call.get()

OSError: [Errno 36] Слишком длинное имя файла

Я не уверен, как правильно сериализовать и дериализовать изображение. Кто-нибудь может показать, как это исправить?

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