Модуль Python перезагружается для каждого запроса с помощью django и mod_wsgi

У меня есть переменная в init модуля, которая загружается из базы данных и занимает около 15 секунд.

Для сервера разработки django все работает нормально, но похоже, что с apache2 и mod_wsgi модуль загружается с каждым запросом (занимает 15 секунд).

Есть идеи об этом поведении?

Обновление: я включил режим демона в моде wsgi, похоже, теперь он не перезагружает модули! нужно больше тестирования, и я обновлю.


person Vishal    schedule 11.06.2010    source источник
comment
предоставьте свою конфигурацию apache mod_wsgi.   -  person nosklo    schedule 11.06.2010


Ответы (2)


Вы, вероятно, игнорировали тот факт, что во встроенном режиме mod_wsgi или с mod_python приложение является многопроцессорным. Таким образом, запросы могут поступать в разные процессы, и вы увидите задержку при первом обнаружении процесса, который еще не был обработан. В режиме демона mod_wsgi по умолчанию используется только один процесс. Это или как кто-то другой упомянул, у вас MaxRequestsPerChild установлен в 1, что является действительно плохой идеей.

person Graham Dumpleton    schedule 13.06.2010
comment
Я понял вашу точку зрения, но что с MaxRequestsPerChild, установленным в 1 в режиме демона? - person Vishal; 14.06.2010
comment
MaxRequestsPerChild не связан с режимом демона, он влияет на дочерние процессы сервера Apache. Повторное использование дочерних процессов сервера Apache после одного запроса очень неэффективно и повлияет на производительность сервера. Более того, если вы запускаете код Python во встроенном режиме с использованием встроенного режима mod_python или mod_wsgi. Производительность, скорее всего, будет хуже, чем у CGI, из-за того, как происходит очистка и перезапуск дочерних процессов сервера Apache. - person Graham Dumpleton; 14.06.2010

Я думаю, у вас было значение 1 для MaxClients / MaxRequestsPerChild и / или ThreadsPerChild в настройках Apache. Таким образом, Apache должен был запускать Django для каждого вызова mod_python. Вот почему это заняло так много времени. Если у вас есть wsgi-daemon, то перезапуск происходит только в том случае, если вы «прикоснетесь» к сценарию wsgi.

person mawimawi    schedule 12.06.2010