我有一个在 eventmachine react 器中运行的服务器,它监听用户的心跳以判断他们是否在线。当它开始/停止接收心跳时,它会适本地将用户标记为在线和离线。
我想将它全部包装在一个 ensure block 中,以便在它退出时将所有当前在线用户标记为离线,但我不确定这有多可靠。
在什么情况下,进程可以在不运行包裹当前执行上下文的 ensure block 的情况下退出?
最佳答案
不少,例如:
- 被 kill -9 杀死
- 段错误等(例如 ruby 本身或 native 扩展中的错误)
- 停电
- 整个系统崩溃(例如内核/驱动程序错误、硬件故障等)
网络故障不会阻止您的确保 block 运行,但可能意味着它无法更新存储这些状态的任何数据存储。
关于ruby - ruby 的 ensure 什么时候不会运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25235089/