2009-08-10 3 views
3

Когда я запускаю веб-сервер `Paste 'в режиме демона, он, кажется, убивает возможность перезагрузки, когда обновляется временная метка исходного файла.Веб-сервер Paste (Python) - проблема с автозагрузкой

Вот как я начинаю демон ...

cd ${project} && ../bin/paster serve --reload --daemon development.ini; cd ..; 

... который поражение одной из главных точек с помощью Paste (для меня).

Кто-нибудь сталкивался с этим или знал, что я делаю неправильно?

Чтобы быть полным, файл, который я изменяю, является файлом контроллера.

версии является `PasteScript 1.7.3'

ответ

5

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

+1

Thankyou - это то, что мне нужно было услышать. :) – Cyrus

+1

Монитор файлов для --reload проверяет каждый исходный файл каждую секунду и может использовать значительное количество процессорного времени. Вы никогда не должны использовать это в производстве. Если вы используете mod_wsgi, он может перезагружаться, проверяя метку времени только на одном сценарии .wsgi, который загружает ваше приложение. Другие серверы WSGI также имеют значительные функции перезагрузки, например, Spawning. – joeforker

+0

* Я считаю, что эти два варианта по существу несовместимы * Они [действительно] (https://bitbucket.org/ianb/pastescript/src/510ff7d7627750eb0dbbc0d36fa63c72ffa6b303/paste/script/serve.py?at=default#cl-162). –

3

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

Я обошел это, запустив пастер, не демонтированный на «экране». Просто введите «экран» в своей оболочке выбора, обычно вам будет предоставлен виртуальный терминал, который будет работать даже при выходе из удаленного сеанса. Запустите пастер, как обычно, в новом «окне» (экране) с помощью --reload, но без демона, а затем отсоедините окно, чтобы вы могли вернуться в свою обычную оболочку (detach = CTRL-A, а затем нажмите D). Вы можете повторно ввести этот экран, набрав «screen -r». Если вы хотите его убить, подключите его (экран -r) и внутри экрана CTRL-A, затем нажмите K.

Надеюсь, что это поможет.

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