Сериализация набора запросов в JSON занимает много времени. Как я могу отладить это?
Я сериализирую объекты модели Django партиями по 10000 как json и отправляю их. Для этого я использую DjangoFullSerializer из wadofstuff, так как я также хотел, чтобы связанное поле было сериализовано вместе с моим объектом. Во время пиковой нагрузки на сервер одной партии требуется около 9-10 минут для завершения. Выборка 10000 объектов MySQL занимает где-то 1-2 секунды. Я не уверен, что сериализация в JSON может сделать так много времени. Я попытался использовать simplejson (который не дает возможность сериализации связанных полей), но времени все еще достаточно много. Я не уверен, но я думаю, что wadofstuff использует simplejson за экраном. Я не смог настроить cjson с Django, поэтому не смог проверить это. Но как я могу настроить оптимально или улучшить использование текущей настройки. Мне кажется, что после того, как данные были извлечены в память, преобразование 10000 объектов в JSON не займет много времени. Я прилагаю дамп профиля, полученный с помощью cProfile. Пожалуйста, посмотрите и предложите некоторые советы / подсказки / помощь.
Вложение: файл дампа cProfile
Заранее спасибо.
Обновление 1: также пишу код, который я использую для тестирования. Я запускаю это в оболочке.
import cProfile
from dashboard.models import *
from django.core import serializers
from datetime import datetime
start = end = None
def myfunc():
global start, end
start = datetime.now()
us = UserPermission.objects.filter(username = 54).values_list('district_operated', flat=True)
villages = list(Village.objects.filter(block__district__id__in = us))
offset = 0
limit = 10000
screenings = Screening.objects.select_related('village').filter(village__in = villages).distinct().order_by("-id")[offset:limit]
x = list(screenings)
json_subcat = serializers.serialize("json", screenings, relations=('village',))
end = datetime.now()
cProfile.runctx("myfunc()", globals(), locals(), 'dump.profile')