gpt4 book ai didi

ruby - 如何捕获 EventMachine 服务器上的顶级故障?

转载 作者:数据小太阳 更新时间:2023-10-29 06:56:51 27 4
gpt4 key购买 nike

我有一个使用 monit 监控的 EventMachine 服务器。有时它会崩溃,我试图找出原因,但我不清楚如何才能记录所有顶级故障。我试过这样的代码:

begin
EventMachine::run do
EventMachine::start_server('0.0.0.0', PORT, MyServer)
end
rescue Exception => e
puts "FAILURE: #{e.class}: #{e}"
end

但这似乎永远不会发现错误。我怀疑这可能是内存不足之类的问题,我正在单独跟踪,但我仍然希望该服务器尽可能记录其故障的近因。

最佳答案

如果您想要一个包罗万象的错误处理程序,请尝试 EM.error_handler。来自 docs 的示例:

EM.error_handler{ |e|
puts "Error raised during event loop: #{e.message}"
}

您可能还需要更细粒度的错误处理,在这种情况下您可以使用 errback 机制(参见 Deferrable)。所以例如你可以在你的 react 器循环中:

EventMachine::run do
server = EventMachine::start_server('0.0.0.0', PORT, MyServer)
server.errback { # handle error thrown by server here }
end

为此,在您的 MyServer 中包含 Deferrable,然后每当您想要引发错误时,调用 fail

关于ruby - 如何捕获 EventMachine 服务器上的顶级故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628232/

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