2017-01-01 2 views
0

В моем проекте Django я написал промежуточное программное обеспечение, которое выполняет операцию для каждого пользователя приложения.Высокое время отклика при установке значения для модуля настроек Django внутри промежуточного программного обеспечения

Я заметил, что время отклика шары, если я пишу следующее в начале модуля промежуточного программного обеспечения:

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE","myproject.settings") 

Это примерно 10 раз меньше если опустить эти строки. Будучи новичком, я пытаюсь выяснить, почему существует такое большое различие между соответствующими временами ответа. Может ли эксперт объяснить это? Вы видели что-то подобное раньше?


p.s. Я уже знаю, почему я не должен изменять переменную среды для параметров Django внутри промежуточного программного обеспечения, поэтому не беспокойтесь об этом.

ответ

1

Причина в том, что django может перезагрузить конфигурацию настроек для каждого запроса, а не один раз на серверный поток/процесс (и, следовательно, повторное создание/подключение к вашей базе данных, кэш и т. Д.). Вы хотите подтвердить это с помощью профилирования. это поведение также очень зависит от того, на каком сервере приложений вы работаете.

Если вам действительно нужен этот уровень контроля для ваших настроек, вам гораздо проще добавить эту строку в manage.py, wsgi.py или любой другой файл/сценарий, который вы используете для запуска вашего сервера приложений.

P.S. Если вы уже знаете, что не должны этого делать, зачем вы это делаете?

+0

Я недавно узнал, поэтому исключил его из моего промежуточного программного обеспечения. Тогда я заметил, что это вызвало общее время отклика сервера, а также мой вопрос. постскриптум Я запускаю gunicorn с nginx как обратный прокси. –

Смежные вопросы