2012-04-02 1 views
1

Я запускаю mod_wsgi на apache2. Он запускает Django и по какой-то причине после изменения моего кода старые версии иногда отображаются вместе с новым кодом.mod_wsgi показывает старый код

Например, после создания представления, которое просто возвращает Http-ответ с помощью «Привет», я получаю либо стартовую страницу Django, либо «Hi».

Любые идеи, что может вызвать это?

Спасибо.

ответ

2

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

+1

В частности, для чтения «http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode». Используйте режим демон в предпочтении встроенному режиму и прикоснитесь к файлу сценария WSGI после изменений, поэтому код будет перезагружен для всего приложения. –

+0

Спасибо! Это первый раз, когда я использую mod_wsgi вместо mod_python. – Temuz

+1

@Temuz, Grzegorz Biały's намного лучше и, вероятно, должен быть принят. – aaronasterling

0

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

0

Удалите любые .pyc файлы из вашего базового каталога кода и перезапустите сервер.

+0

Мне никогда не приходилось удалять файлы '.pyc', потому что python проверяет наличие изменений в исходном коде. – aaronasterling

5

Как @aaronasterling сказал - mod_wsgi хранит код, однако нет необходимости перезапускать apache после изменения. Более удобный способ прикоснуться WSGI файл из CLI, например .:

$ touch django.wsgi 
+0

+1 Спасибо за подсказку – aaronasterling

+0

+1, но это работает, только если mod_wsgi запущен в режиме демона –