Как улучшить время обработки ответа 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
  1. I can't use bulk_create because of multi-table inheritance
  2. This is calling full_clean() on each object
  3. Serialization of objects is irrelevant
  4. After my function return Response(...), all this time is spent on Django's backend

Как я могу улучшить шаг 4? Я не понимаю, почему требуется так много времени, чтобы обработать ответ и выплюнуть его обратно.

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