gpt4 book ai didi

ruby - Sinatra - 根据请求终止服务器

转载 作者:数据小太阳 更新时间:2023-10-29 08:00:12 25 4
gpt4 key购买 nike

我希望能够根据请求终止 Sinatra 应用程序,例如使用以下路线:

post '/terminate' do
Thread.current.kill
end

这么实现有点唐突。我宁愿请求完成,返回 HTTP OK 消息,然后 Sinatra 正常关闭。

有钩子(Hook)可以做到这一点吗?

编辑:

我的应用程序是一个用于接收 webhook 通知的轻量级模拟服务器。我将在同一台机器(不同端口)上使用多个这样的服务器,因此需要避免任何启动/停止的全局方法。

我的要求是由每个服务器必须在其自己的 Ruby 实例中运行这一事实驱动的,因此除了通过 REST 接口(interface)之外,我的测试与服务器之间没有通信。

我正在使用默认的 thin 服务器来运行 Sinatra。到目前为止,我的代码只是 Sinatra::Base 的一个子类,开始在代码中使用 run!。这很好也很简单,我可以制作独立的脚本来实例化每个服务器,我只需要有一种停止它们的方法。

最佳答案

这似乎归结为响应发送后 运行代码的问题。这不是一件容易的事:

What's the fastest way for a true sinatra(ruby/rack) after_filter?

也就是说,看起来你可以做这样的事情(虽然我还没有测试过):

post '/terminate' do
body "I'll be back..."
# maybe clean things up here...
logger.info "Received terminate request!"
Thread.new { sleep 1; Process.kill 'INT', Process.pid }
halt 200
end

看起来很“hacky”,但我质疑无论如何都能够通过调用 URI 远程关闭 Web 服务器的意义。 ;-)

关于ruby - Sinatra - 根据请求终止服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19523889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com