Я пытаюсь понять, почему ModelSerializer
в django rest framework слишком медленно.Я знаю о проблеме с N + 1 запросами, это не так.У меня супер простая модель, которая имеет только цифры и строки.Профилирование показывает, что мой код большую часть времени проводит внутри метода Serializer::to_representation()
, который не выполняет запросов к базе данных.
Странная вещь заключается в том, что время, проведенное внутри to_representation
метода, иногда составляет 0.00001s
(что соответствует ожиданиям), иногда 0.001s
, а иногда (очень редко) 0.05s
.Время не коррелирует с размером сериализуемого объекта (в моем случае они все одного размера).
Сериализация 300 объектов занимает около 1s
.Мой рукописный сериализатор, который просто записывает obj
в строку json, получая все поля вручную вместо MySerializer(obj).data
, выполняет работу в 0.05s
, что сравнимо с тем, что я ожидал, учитывая 0.00001s
, потраченный внутри to_representation
.
Что может заставить метод to_representation
иногда работать так медленно и как я могу сделать мой сериализатор быстрее?