Я наблюдаю значительное снижение производительности DRF для простого кода Python при работе под API по сравнению с автономным.
Например, здесь приведены тесты для запуска автономного кода Python (т. Е. Вне Django. Простопростой старый скрипт на питоне). Я загружаю пользовательский файл, преобразовываю его в пользовательский объект и выполняю некоторые проверки на нем. Все сделано в обычном коде Python без зависимостей Django и ORM.
xlsname = 'user_file.xlsx'
dash = Dashboard(xlsname,logging.ERROR,create_copy=True) #loading user file
Load time: 1.828125
dash.validate() #validate user file
Validation time: 0.203125
Теперь при запуске того же кода в простом представлении функции DRF:
#views.py
@api_view(['GET'])
def load_and_validate(request):
xlsname = 'user_file.xlsx'
dash = Dashboard(xlsname, logging.DEBUG, create_copy=True)
dash.validate()
return Response({"message": "{} loaded".format(xlsname)})
Мое время ответа:
Load time: 1.96875 #this is in line with standalone execution
**Validation time: 5.21875 # this is 2500x slower than standalone!**
Время проверки моего файла теперь в 2500 раз медленнее, чем в автономном режиме!
Я еще даже не использую ORM, поэтому запросов нет. Все загружается в память и выполняется оттуда.
Что может быть причиной этого и как я могу его диагностировать?