Django и live server, при перезаписи все еще используются старые исходные файлы - PullRequest
0 голосов
/ 18 декабря 2011

Я использую Django 1.3 на сервере Apache и mod_wsgi (режим демона) с Nginx для обслуживания статического файла.База данных находится на отдельном сервере.Демон wsgi работает в 2 потоках с максимальным количеством запросов 100.

У меня возникают проблемы при переопределении старых файлов .py ... Не .pyc ... Я также переопределяю файл конфигурации .wsgi(http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode). Иногда некоторые запросы к серверу используют старый код, и поэтому генерируется ошибка (HTTP ERROR 500). Существует ли кэш на стороне сервера, который необходимо очистить?

Может ли это быть сгенерированопо файлам .pyc? Нужно ли перезапускать сервер Apache или демон wsgi?

Ответы [ 2 ]

3 голосов
/ 18 декабря 2011

Если вы удалите файлы .pyc и дотронетесь до файлов wsgi, он должен перезагрузить демон wsgi, когда он получит шанс, и у вас все получится.

Иногда мне приходилось перезапускать apache, чтобы мои изменения вступили в силу.

1 голос
/ 19 декабря 2011

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

Наиболее надежным методом развертывания будет установка новой версии в совершенно новую иерархию каталогов с файлом сценария WSGI вне этого дерева. Затем замените файл сценария WSGI новым, ссылаясь на новый каталог. При этом файл сценария WSGI при этом не следует редактировать на месте, но новый файл перемещается на место, поэтому файловая система выполняет атомарную замену всего файла и не рискует быть отобранным на лету.

...