Как красиво закрыть приложения Perl dancer

Я запускаю несколько приложений Perl dancer одновременно с одним и тем же пользователем в режиме FCGI (Apache). Как я правильно понимаю, Apache (или любой другой веб-сервер) создаст новое приложение для танцора, если текущее (-ые) занято.

Чтобы гарантировать, что ни один посетитель не будет прерван отключением танцора, я предпочитаю позволять танцору обрабатывать текущее соединение до тех пор, пока оно не завершится, а затем exit/last процесс.

Как закрыть приложение Perl dancer, используя сигнал уничтожения HUP, чтобы выполнить такое приятное завершение работы?

Чтобы развернуть новую версию приложения танцора, я использую pkill -HUP perl в качестве пользователя танцора, чтобы «завершить» процессы. Но в настоящее время (из-за отсутствия обработчика сигнала) это больше похоже на застрелить их с завершением приложения.


person burnersk    schedule 20.10.2012    source источник
comment
Если вы можете изменить свою инфраструктуру, вы можете попробовать один из веб-серверов plack, который поддерживает ваши потребности. starman и hyponotoad корректно перезапускаются на SIGHUP   -  person matthias krull    schedule 20.10.2012
comment
starman звучит здорово, пытаюсь спорить с сисадминами. Можете ли вы сделать свой комментарий ответом, @mugen.   -  person burnersk    schedule 20.10.2012


Ответы (2)


решение mugen kenichi работает (starman):

Если вы можете изменить свою инфраструктуру, вы можете попробовать один из веб-серверов plack, который поддерживает ваши потребности. starman и hyponotoad делают изящные перезапуски на SIGHUP

В отношении <% request.uri_base %> есть несколько недостатков, поэтому нам приходится разрабатывать с жестко закодированными путями URI. Не очень красиво, но необходимо.

person burnersk    schedule 22.10.2012

Если я правильно понял ваш вопрос, вы обеспокоены тем, что Apache/FCGI может убить приложение Dancer, когда оно находится в процессе обработки запроса. Это правильно?

Если это так, не беспокойтесь об этом. Apache/FCGI этого не делает. Когда он разветвляет новый экземпляр обработчика, потому что существующие заняты, это новый экземпляр в дополнение к существующим экземплярам. Существующие остаются в покое, чтобы закончить то, что они делают.

person Dave Sherohman    schedule 20.10.2012
comment
Привет @Дэйв. Я улучшил свой вопрос. Меня не беспокоит, что Apache дико убивает приложение. Но все равно спасибо :) - person burnersk; 20.10.2012