Webpy: как автоматически перезагрузить исходный код, когда он изменился?
Я учусь webpy писать код. Я использую Webpy Framework 0.34. моя операционная система Ubuntu 11.04 и версия Python 2.7. в руководствах webpy.org говорится:
"При работе со встроенным веб-сервером приложение запускается в режиме отладки. В режиме отладки любые изменения в коде и шаблонах автоматически перезагружаются".
но это не работает
мой код code совпадает с примером учебника:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import web
class index():
def GET(self):
return 'a'
if __name__ == '__main__':
urls = ('/', 'index')
app = web.application(urls, globals())
app.run()
и я использую встроенный веб-сервер (используется
python code.py
запустить сервер)
когда я меняю код "return" a "на" return "b" ", в веб-браузере он продолжает отображать" a ", пока я не перезапущу сервер.
перезапуск сервера каждый раз, когда вы переписываете код, тратит впустую время, почему механизм автозагрузки не работает? Я делаю что-то неправильно? Спасибо за любую помощь.
редактировать: извините, мой code.py не совсем совпадает с примером учебника, которые вызывают проблему. если я помещу строку назначения urls вне оператора if, механизм перезагрузки работает!!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import web
class index():
def GET(self):
return 'a'
urls = ('/', 'index')
if __name__ == '__main__':
app = web.application(urls, globals())
app.run()
но я не знаю почему...
4 ответа
Если у вас есть отдельный route.py
файл как я, не проектируйте файл как это:
from controllers.index import Index
urls = ('/','Index')
он не перезагрузится при изменении документа, вместо этого сделайте следующее:
urls = ('/','controllers.index.Index')
Попробуйте добавить следующее в начало вашего кода (после импорта):
web.config.debug = True
Для получения дополнительной информации: http://webpy.org/docs/0.3/tutorial
У меня есть только одна идея: ваш редактор не меняет время модификации ваших файлов. Попробуйте принудительно изменить временную метку, выполнив следующую команду после изменения кода и после этого проверьте результаты:
$ touch code.py