Ошибка при передаче содержимого файла задаче 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?