ruby - 停止分布式 Ruby 服务

标签 ruby distributed ruby-1.9 ruby-1.8 drb

我有一个启动 DRb 服务的脚本,然后生成处理程序对象并通过 DRb.thread.join 等待。我希望脚本一直运行直到被明确杀死,所以我添加了

trap "INT" do
  DRb.stop_service
end

在 Ruby 1.8 下成功停止 DRb 服务并退出,但在 1.9 下似乎死锁(在 OS X 10.6.7 上)。对该进程进行采样显示在 semaphore_wait_signal_trap 中有几个线程在旋转。

我假设我在调用 stop_service 时做错了什么,但我不确定是什么。谁能给我任何关于如何正确处理它的指示?

最佳答案

好的,我想我已经找到了解决方案。如果我将原始代码替换为

begin
  DRb.thread.join
rescue Interrupt
ensure
  DRb.stop_service
end

Ctrl-C 起作用并停止服务。

关于ruby - 停止分布式 Ruby 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460799/

相关文章:

hadoop - Map Reduce沿途生成的数据

ruby-on-rails - 打包 html 模板、javascript 和 css 以供多个平台使用

ruby 1.9.x,奇怪的解析,这是怎么回事?

ruby - ruby 的 C1 或 C2 覆盖工具

ruby - 如何在 Ruby 中指定输出文件编码?

ruby-on-rails - 没有路由匹配 { :controller= >"stocks", :action= >"create"} RSpec Rails 3

ruby - 数组.include?多个值

ruby - 为什么 Ruby 将 FixNum n 散列为 2n+1?

mysql - 可以免费安装mySQL Cluster吗?

ruby - 如何判断一个Constant是否定义在模块命名空间内,而不是全局命名空间?