Ошибка при передаче содержимого файла задаче Celery: "Объект типа InMemoryUploadedFile не является JSON-сериализуемым".

Description: Я сталкиваюсь с ошибкой при попытке передать содержимое файла непосредственно в задачу Celery в приложении Django. Я получаю следующее сообщение об ошибке: "Error: Object of type InMemoryUploadedFile is not JSON serializable" API View:

class TradeMappingView(APIView):
    parser_classes = (MultiPartParser,)

    def post(self, request, format=None):
        serializer = InputSerializer(data=request.data)
        if not serializer.is_valid():
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

        file_content = serializer.validated_data['file']
        column_mapping = serializer.validated_data["column_mapping"]
        merge_columns = serializer.validated_data.get("merge_columns", {})
        values_to_replace = serializer.validated_data.get("values_to_replace", {})

        try:
            synchronizer.delay(
                file=file_content,
                file_type="trade",
                columns_to_rename=column_mapping,
                merge_columns=merge_columns,
                values_to_replace=values_to_replace,
            )

            return Response("Trades synchronization started successfully.", status=status.HTTP_202_ACCEPTED)
        except Exception as e:
            return Response(f"Error: {e}", status=status.HTTP_500_INTERNAL_SERVER_ERROR)

Задача сельдерея:

@shared_task
def synchronizer(file, file_type, columns_to_rename=None, values_to_replace=None, merge_columns=None):
    try:
        synchronizer_instance = Synchronizer(
            file=file,
            file_type=file_type,
            columns_to_rename=columns_to_rename,
            values_to_replace=values_to_replace,
            multiple_sheets=None,
            merge_columns=merge_columns
        )
        synchronizer_instance.run()
    except Exception as e:
        raise synchronizer.retry(exc=e)

Я заметил, что ошибка возникает, даже если данные, переданные в задачу Celery, проходят проверку InputSerializer. Как устранить эту ошибку и успешно передать содержимое файла задаче Celery?

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