如何很好地关闭Perl舞者应用程序

时间:2012-10-20 14:36:53

标签: perl apache signals fastcgi dancer

我在FCGI模式(Apache)中使用相同的用户同时运行多个Perl舞者应用程序。据我所知,如果当前的应用程序繁忙,Apache(或任何其他网络服务器)将分叉一个新的舞者应用程序。

为了确保没有访客因舞者关闭而中断我喜欢让舞者处理当前连接,直到完成,然后exit / last这个过程。

如何使用kill信号HUP关闭Perl舞者应用程序来执行这样的关闭?

要推出新版本的舞者应用程序,我使用pkill -HUP perl作为舞者用户“关闭”进程。但是目前(由于缺少信号处理程序),它更像是向下射击

2 个答案:

答案 0 :(得分:2)

solution by mugen kenichi有效(starman):

  

如果您能够更改基础架构,可以尝试一种支持您需求的plack Web服务器。 starman和hyponotoad都在SIGHUP上进行了优雅的重启

关于<% request.uri_base %>存在一些缺点,因此我们必须使用硬编码的URI路径进行开发。不是很帅但很必要。

答案 1 :(得分:0)

如果我正确地阅读了您的问题,您会担心Apache / FCGI可能会在处理请求时杀死Dancer应用程序。这是对的吗?

如果是这样,请不要担心。 Apache / FCGI不这样做。当它分叉处理程序的新实例时,因为现有的处理程序正忙,除了现有实例之外,这是一个新的。现有的只剩下他们正在做的事情。