2014-02-13 12 views
0

Возможно ли использовать команду перезагрузки python (или аналогичную) на одном модуле в автономном веб-приложении черри? У меня есть веб-приложение на основе CherryPy, которое часто находится под постоянным использованием. Время от времени я делаю «важное» изменение, которое влияет только на один модуль. Я хотел бы иметь возможность немедленно перезагрузить этот модуль, не затрагивая остальную часть веб-приложения. Полный перезапуск, по общему признанию, быстрый, однако есть еще несколько секунд простоя, которые я бы предпочел избежать, если это возможно.Перезагрузка одного модуля в черри?

+0

http://stackoverflow.com/questions/6270395/detect-if-a-python-module-changes-and-then-reload –

+0

@ OmidRaha рядом, но нет сигары. Этот вопрос не имеет ничего общего с вишневым. Я знаю, как перезагрузить модуль в целом (см. Мою ссылку на команду перезагрузки python), то, что я ищу, - это способ заставить CherryPy (а не мой код) перезагрузить один из моих модулей. Разве это не так просто, как вызвать перезагрузку в моем коде? – ibrewster

ответ

4

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

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

Отсутствие простоя. Без сумасшедшего, неуязвимого кода.

+2

+1. Однажды я пошел по этой дороге. Благосостояние было * не * сохранено. – Carpetsmoker

+0

http://tools.cherrypy.org/wiki/ModProxy - это информация об использовании CherryPy с mod_proxy. (Не стесняйтесь использовать nginx или что-то другое вместо Apache, как вы предпочитаете.) –

+0

Я вижу. Так что у меня два экземпляра моего сервера приложений (по крайней мере, при изменении материала). Я уже использую apache с mod_proxy, так что это вполне выполнимо, просто используя два разных порта для сервера приложений и переключение между ними. Однако я бы подумал, что у меня будет такая же проблема с перезапуском apache, чтобы изменить прокси-маршрутизацию - опасность того, что пользователь не получит ответ, когда апач перезагрузился, чтобы использовать другой сервер/порт. Если я не смогу сделать живое обновление прокси-маршрута/маршрутизации? Hmmmm ... – ibrewster

Смежные вопросы