我希望能够根据请求终止Sinatra应用,例如,用以下路线:Sinatra - 通过请求终止服务器
post '/terminate' do
Thread.current.kill
end
像这样实现它有点突然。我宁愿完成请求,返回HTTP OK消息,然后Sinatra优雅地关闭。
有没有这样做的钩子?
编辑:
我的应用程序是用于接收网络挂接通知一个轻量级的模拟服务器。我将在同一台计算机上使用多个服务器(不同端口),因此需要避免任何全局启动/停止方法。
我的要求是由于每个服务器都必须运行在自己的Ruby实例中,因此我的测试与服务器之间除了通过REST接口之外没有任何通信。
我使用默认的thin
服务器来运行Sinatra。到目前为止,我的代码只是Sinatra :: Base的一个子类,从代码中开始使用run!
。这很好,很简单,我可以让独立脚本实例化每个服务器,我只需要有一种方法来阻止它们。
取决于您正在运行sinatra的机架服务器,您可以发送一些终止信号,如'SIGKILL'。这应该会正常关闭服务器。看看你的Web服务器的文档。 – phoet
@phoet查看我的扩展问题了解更多详情。如果您认为有一种方法可以选择特定的瘦服务器并将它们发送给SIGKILL,请将其作为答案提交。 – Stefan
如果你想实现一个轻量级的测试加倍,我认为最好通过简单的服务器套接字来做到这一点。这样你就可以完全控制运行时行为和它应该接收的调用次数。这两者都不是很难。 – phoet