强制 ruby 程序在退出时重新运行的方法



我确信有一个简单的方法可以做到这一点,但我似乎找不到它。

我只是希望我的 ruby 程序一直运行,所以如果它因某种原因退出或终止,我希望它自动重新运行。

关于如何实现这一目标的任何想法?

-谢谢

虽然你可以自己编写这种东西,但最好从像守护进程这样的库开始,并使用它来管理你的进程。

如自述文件所示,它非常简单:

require 'daemons'
Daemons.run('service.rb')

其中service.rb是要继续运行的主应用程序的入口点。

您在同一 Ruby 进程中强制重启应用程序的方法似乎有效,但它可能会在以后造成混乱。如果您的程序已进入执行任何操作都会导致异常的状态,并且导致重新启动,从而立即触发新的异常,该怎么办?如果它因为内部状态被破坏而崩溃怎么办?

让它死去,用像守护程序这样的主管进程干净地重新启动它,你会过得更好。这些主管通常会限制重启,以避免在服务器出现问题时每秒重新启动数千次。

重新启动逻辑由您在服务器中使用的监视器正确完成(systemd 或 monit 可以很容易地做到这一点,但还有很多其他的)。

如果您正在执行一项服务,则不希望它每次都重新启动,因为它的成本太高,该过程保存在等待收入请求的事件循环中,但这通常是在您用于处理协议的库中为您完成的,因此您只编写传入请求的处理程序。

相关内容

  • 没有找到相关文章

最新更新