Языки веб-сценариев 2011 года и динамическая перезагрузка - PullRequest
5 голосов
/ 16 февраля 2011

Это уже давно давало мне покоя.

В развернутом веб-приложении PHP можно загрузить измененный сценарий php и получить обновленный файл на веб-сервере без перезагрузки.

Проблема? Ruby, Groovy, & Python и т. Д. Все "лучше", чем PHP, с точки зрения выразительности языка, краткости, мощности, ... вашего разума здесь.

В настоящее время я действительно наслаждаюсь Groovy (через Grails), но реальность такова, что JVM не справляется (вообще) с производственной динамической перезагрузкой кода приложения. По сути, ошибки Permgen, связанные с нехваткой памяти, являются виртуальной гарантией, а это означает, что сбой приложения в любое время - не очень хорошо.

Похоже, что в Ruby-фреймворках это решено в некоторой степени из того, что я прочитал: у Passenger есть возможность динамически перезагружать измененные файлы в каталогах по запросу при следующем запросе (таким образом, предотвращая отключение подключенных пользователей, потерю сеанса и т. Д.).

Автономный Python, в котором я совсем не уверен; может, как и PHP, разрешать динамическую перезагрузку сценариев Python без перезапуска веб-сервера.

Что касается нашей веб-работы, клиенты неизбежно захотят внести изменения в развернутое приложение независимо от того, насколько детальной и хорошо спланированной была спецификация. Сказать клиенту: «Конечно, завтра мы осуществим это [простое] изменение в 4 часа утра [чтобы не нанести ущерб подключенным пользователям]», не будет слишком хорошо.

Начиная с 2011 года, где мы находимся с точки зрения динамической перезагрузки и языков сценариев? Неужели мы навсегда обречены, отведены под удобство PHP или от радости не-PHP и вынуждены перезапустить развернутое приложение?

Кстати, я вовсе не фанат JSP, GSP и Ruby, шаблонных эквивалентов Python, несмотря на их перезагружаемость. Это торт, и он тоже есть, где мы можем внести изменения в любой аспект приложения и не нужно перезапускать.

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

Я думаю, что вы делаете из этого нечто большее, чем оно есть на самом деле.

Любое приложение, для которого так важно, чтобы оно никогда не отключалось в течение 1/2 минуты (и всетребуется перезагрузить сервер, чтобы получить изменение файла) действительно нужно иметь несколько экземпляров сервера приложений для обработки потенциальных сбоев отдельных экземпляров.Если у вас есть несколько серверов приложений для обработки сбоев, вы также можете безопасно перезапустить отдельные экземпляры для обслуживания, не вызывая проблем.

4 голосов
/ 16 февраля 2011

Вы не указали веб-сервер.Если вы используете Apache, mod_wsgi - ваш лучший выбор для запуска веб-приложений Python, и он имеет механизм перезагрузки , который не требует перезапуска сервера.

...