Django медленное выполнение кода Python (без ORM) - PullRequest
0 голосов
/ 07 ноября 2019

Я наблюдаю значительное снижение производительности 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, поэтому запросов нет. Все загружается в память и выполняется оттуда.

Что может быть причиной этого и как я могу его диагностировать?

1 Ответ

1 голос
/ 07 ноября 2019

Ошибка пользователя. Я запускал дело DRF при ведении журнала. Отладка вместо входа в систему. ОШИБКА.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...