Celery EncodeError(TypeError('Object of type Response is not JSON serializable'))



我正在一起使用Celery-Redis-Django rest框架。当我试图将序列化程序传递给Django rest框架中的celener延迟时,就会发生错误。

这是视图集

class TestSet(viewsets.ModelViewSet):
queryset = Test.objects.all()
serializer_class = ImageSerializer
def create(self, request, *args, **kwargs):
serializer = TestSerializer(data=request.data)
if serializer.is_valid():
image_uploaded= "static_path"

json_data = base64.b64encode(np.array(image_uploaded)).decode('ascii')
result = test_call.delay({'image': json_data})
result = test_call.delay(serializer)
data = {"task": result.task_id}
return Response(data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@shared_task(name="values")
def test_call(decoded_image):
return decoded_image

我得到的错误是

EncodeError(TypeError('响应类型的对象不是JSON可序列化的(

更新:即使我这样做,我仍然会得到一个错误

result = test_call.delay({"task": 1})
@shared_task(name="values")
def test_call(decoded_image):
return {"task": 2}

这不会回答你的问题,但我不能留下评论(声誉低(。

您似乎正在尝试JSON序列化某些显然不可JSON序列化的内容。根据名称,它是某种图像数据。您可以尝试一个不同的工作流程,它应该是JSON序列化的,例如:

一个例子:

  1. 首先将映像保存在以后可以访问的地方,并在序列化程序中添加位置(S3存储桶,然后是映像的链接(
  2. 在芹菜任务中,获取基于该位置的图像数据

第二个示例:

  1. 将图像数据转换为JSON可序列化的内容,如Base64图像字符串

相关内容

  • 没有找到相关文章

最新更新