Почему mod_python запускает весь стек django с начала каждого запроса? - PullRequest
1 голос
/ 03 сентября 2010

Насколько я понимаю, mod_python загружает процесс python в apache, избегая лишних затрат на выполнение этого при каждом вызове. Я ожидал, что это будет означать, что мой стек django будет загружен только один раз.

Однако я наблюдаю, что каждый запрос запускает весь стек django с самого начала, как если бы это был первый запрос. Настройки повторно импортируются. Промежуточное программное обеспечение __init__, которое должно запускаться один раз при запуске django, запускается каждый раз. И так далее. Похоже, по сути, я ожидаю, что CGI будет.

Это ожидаемое поведение? В основном я работал с mod_wsgi, который, по моему мнению, не работает таким образом, но я должен использовать mod_python для моего текущего клиента.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Apache в системах UNIX - это многопроцессорная система, на которую указал кто-то другой. Также убедитесь, что MaxRequestsPerChild не был установлен равным 1 в конфигурации Apache по какой-то причине. В идеале эта директива должна быть установлена ​​на 0, что означает сохранение процессов вокруг, а не их повторное использование в зависимости от количества запросов.

0 голосов
/ 03 сентября 2010

Он загружает Django один раз за процесс httpd.Поскольку запускается несколько процессов (каждый дочерний процесс), запускается несколько экземпляров Django.

...