Найти - Пользователи
Полная версия: Вопрос по wsgi и кэшированию кода
Начало » Web » Вопрос по wsgi и кэшированию кода
1
surfer111
У меня есть небольшой проект на 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>

P.S. В конфигурации apache параметр MaxRequestsPerChild равен 0
Lexander
При изменении приложения, запущенного под mod_wsgi в daemon mode автоматический рестарт делает только процесс, обслуживающий приложение.
Если приложение запущено (“закешировано”), повторных обращений к диску нет.
Lexander
Кстати, было бы неплохо для вашего виртуального хоста прописать директивы WSGIDaemonProcess и WSGIProcessGroup, если они отличаются таковых в конфиг-файле сервера.

Чтобы убедиться, что все работает так, как вам нужно, просто измените настройку логгирования Апача.
Детализируйте уровень логов до
LogLevel info

В результате получите информацию о старте демона и перезагрузке вашего приложения (при его обновлении).

ЗЫ
Не забудьте только потом вернуть настройку LogLevel обратно :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB