我确定有一种简单的方法可以做到这一点,但我似乎无法找到它。
我只是希望我的ruby程序一直运行,所以如果它出于某种原因退出或终止,我希望它能自动重新运行。
有关如何实现这一目标的任何想法?
-Thanks
答案 0 :(得分:0)
虽然您可以自己编写此类内容,但最好从像daemons这样的库开始,并使用它来管理您的流程。
如自述文件所示,它非常简单:
require 'daemons'
Daemons.run('service.rb')
service.rb
是您希望继续运行的主应用程序的入口点。
您在同一个Ruby进程中强制重启应用程序的方法似乎可行,但它可能会在以后引起混乱。如果您的程序进入了一个状态,其中任何事情都会导致异常,并导致重新启动,这会立即触发新的异常,该怎么办?如果由于内部状态被破坏而崩溃会怎么样?
让它死掉,用Daemons这样的监督程序干净地重新启动它,你会好起来的。这些主管经常会重启,以避免在服务器遇到麻烦的情况下每秒重启数千次。
答案 1 :(得分:0)
您在服务器中使用的监视器正确地为您完成了重启逻辑(systemd或monit可以很容易地完成,但还有很多其他的)。
如果你正在做服务,你不希望它每次都重启,因为它太昂贵了,这个过程是在一个等待收入请求的事件循环中保存,但这通常是在库中为你完成的您用来处理协议,因此您只编写传入请求的处理程序。