2010-05-15 4 views
5

Я работаю с web2py и по какой-то причине web2py, похоже, не замечает, когда код изменился в некоторых случаях. Я не могу сузить его, но время от времени изменения кода не отражаются, у web2py, очевидно, есть старая версия, кэшированная где-то.Предотвращение кэширования web2py?

Единственное, что помогает - выйти из web2py и перезапустить его (я использую внутренний сервер).

Любые подсказки? Спасибо !

ответ

0

web2py сам не должен «кэшировать» ваш код, но любой сервер приложений, на котором вы его используете, наверняка может. Но web2py может быть развернут на таком огромном множестве серверов приложений, что невозможно дать общие предложения.

Если вы используете популярный сервер cherrypy WSGI, что я считаю, поставляется в комплекте с web2py, например, видеть, в собственной документации CherryPy, в функции AutoReload. Такие функции - , а не, рекомендованные в производственном развертывании (они могут потребовать очень значительные ресурсы), но они наверняка пригодится, когда вы только начинаете! -)

+0

Хм, хорошо, я использую сервер черри, который поставляется с web2py. Поскольку он, похоже, привязан к web2py, я не могу найти нужный файл конфигурации. В любом случае - из того, что я понимаю, кажется, очень больно, чтобы сервер использовал обновленный файл. Я имею в виду, если я запускаю простые скрипты python на lighttpd без web2py, я никогда не буду делать ничего подобного :( – Joe

+0

@Joe, если вы запустите CGI, тогда по определению скрипт будет считываться заново с диска каждый раз и должен делать все его инициализация снова и снова: это хорошая часть того, что делает CGI настолько медленным. Если вы хотите скопировать web2py и развернуть как CGI, идите прямо вперед: web2py поставляется с адаптером CGI, 'cgihandler.py' - см. все развертывание рецепты по адресу http://web2py.com/book/default/section/11/0 (ошибочно говорится, что modpythonhandler является адаптером для CGI и cgihandler для modpython, но, очевидно, наоборот:;). –

5

web2py кэширует ваш код, за исключением Google App Engine (для скорости). Это не проблема. Если вы редактируете код в моделях, представлениях или контроллерах, вы сразу видите эффект.

Проблема может быть модулями; если вы редактируете код в модулях, вы не увидите эффект сразу, если вы не импортируете их с помощью local_import('module', reload=True) или перезапустив web2py.

Это также не ваша проблема, тогда ваш браузер кеширует что-то. Пожалуйста, поднимите этот вопрос в список рассылки web2py, поскольку мы можем больше помочь.

P.S. Если вы используете последнюю версию web2py, она больше не поставляется с черри. Встроенный веб-сервер называется Rocket.

+0

Спасибо за ваш ответ, loca_import сделал трюк :) – Joe