Форум сайта python.su
У меня есть небольшой проект на django, который я развернул при помощи связки apache2 + nginx + mod_wsgi. Апач стоит как бэкенд, nginx как фронтенд. В документации говорится, что wsgi считывает python-код с диска при первом обращении, а затем при поступлении запросов, использует код из кэша. И при работе в режиме “embedded mode”, если мы меняем код, необходимо перезугрузить apache, чтобы кэш обновился и пользователь увидел изменения.
Дело в том, что когда я меняю код, я сразу вижу изменения на сайте, даже не перезагружая apache. Значит ли это, что по какой-то причине код не кэшируется, а считывается каждый раз с диска? Как это можно проверить?
Мой файл с настройками виртуального хоста:
<VirtualHost 127.0.0.1:81> ServerName domain.ru ServerAlias www.domain.ru ServerAdmin webmaster@domain.ru DocumentRoot /path/to/project/root/public RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ /index.py/$1 [L,QSA,PT] <Directory /path/to/project/root/public> AllowOverride All Order deny,allow Allow from all </Directory> WSGIScriptAlias /index.py /path/to/project/root/wsgi.py <Directory /path/to/project/root> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory> </VirtualHost>
Отредактировано surfer111 (Окт. 16, 2012 15:51:56)
Офлайн
При изменении приложения, запущенного под mod_wsgi в daemon mode автоматический рестарт делает только процесс, обслуживающий приложение.
Если приложение запущено (“закешировано”), повторных обращений к диску нет.
Офлайн
Кстати, было бы неплохо для вашего виртуального хоста прописать директивы WSGIDaemonProcess и WSGIProcessGroup, если они отличаются таковых в конфиг-файле сервера.
Чтобы убедиться, что все работает так, как вам нужно, просто измените настройку логгирования Апача.
Детализируйте уровень логов до
LogLevel info
В результате получите информацию о старте демона и перезагрузке вашего приложения (при его обновлении).
ЗЫ
Не забудьте только потом вернуть настройку LogLevel обратно :)
Офлайн