Как улучшить время обработки ответа Django REST?
В проекте Django/DRF я пытаюсь улучшить производительность конечной точки API, которая принимает файл JSON и создает из него объекты модели в базе данных. Этот JSON может быть очень большим, содержащим сотни или тысячи записей. Представление использует класс DRF ViewSet в качестве базы.
Я написал модульный тест с фикстурой, содержащей около 800+ записей (таким образом, 800+ объектов модели), чтобы исследовать потенциальные узкие места в потоке. Задав время для нескольких шагов, которые, как я думал, будут критическими, я обнаружил следующее:
1) Time to create: 37.771371603012085
2) Time to check objects errors: 52.56421709060669
3) Time to create response: 0.499253511428833
4) Time Django processing response: 81.24804949760437
Time taken: 172.08289170265198
- I can't use
bulk_createbecause of multi-table inheritance - This is calling
full_clean()on each object - Serialization of objects is irrelevant
- After my function
return Response(...), all this time is spent on Django's backend
Как я могу улучшить шаг 4? Я не понимаю, почему требуется так много времени, чтобы обработать ответ и выплюнуть его обратно.