标签: drb

Drb和"被回收的对象"例外

我正在经历一个奇怪的问题.我的控制器调用drb对象

@request_handler = DRbObject.new(nil, url)
availability_result = @request_handler.fetch_availability(request, @reservation_search, params[:selected_room_rates])
Run Code Online (Sandbox Code Playgroud)

这个Drb对象正在进行一些搜索.

但有时候,在linux环境中,我得到了一个带有这个堆栈跟踪的"0xdba87b30是回收对象"

--- 
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:375:in `_id2ref'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:375:in `to_obj'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1402:in `to_obj'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1704:in `to_obj'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:613:in `recv_request'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:911:in `recv_request'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1530:in `init_with_client'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1542:in `setup_message'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1494:in `perform'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1589:in `main_loop'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1585:in `loop'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1585:in `main_loop'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1581:in `start'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1581:in `main_loop'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1430:in `run'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1427:in `start'
- (druby://10.254.143.159:9001) /usr/lib/ruby/1.8/drb/drb.rb:1427:in …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails drb

7
推荐指数
1
解决办法
1308
查看次数

我应该在这个网站应用程序中使用Rails或Ruby吗?怎么样?

我对网络编程很新(或者实际上,它已经很老了,因为我上次与网络混乱是HTML 1.1),但现在需要快速部署Web应用程序.似乎每次我转身时,都会有新的首字母缩略词和技术需要学习(JSON,XMLRPC,GWT,Javascript,Rails等).

这是我的应用必须做的事情:

  1. 给定用户名和密码,进行身份验证(很简单,一切都是这样,显然).
  2. 允许用户上传大量数据以进行处理.
  3. 处理该数据.
  4. 允许用户下载其处理的数据.

我已经有了Java脚本和数据库来处理数据.在一台机器上,我可以运行一系列命令行程序来处理传入的数据块并将结果放回到mysql数据库中.那已经存在并且有效.

我想使用这些现有和经过测试的方法构建此任务的Web前端.我现在倾向于这种方法:

  1. 有两台机器,一台数据库机器和一台Web服务器.如果需要,该方法允许以后的可伸缩性,但也要求我不能假设我用来访问数据并操纵它的程序是本地存储的.
  2. 使用Ruby DRb应用程序创建服务器和客户端.客户端会将数据传递给服务器,服务器又会调用这些应用程序.
  3. 使用其他一些Ruby接口与Web前端的DRb进行交互.

这是我的问题:看起来大多数用于Web的Ruby应用程序都会自动尝试构建某种本地数据库.我发现的所有Rails教程都是从创建自己的数据库并与之交互开始的,这正是我不想做的事情.

Rails是适合我的技术,还是使用Ruby DRb?我应该探索一些其他技术吗?

如果Rails或Ruby是正确的东西,我应该看什么?我已经有了编程Ruby书,并且已经将它用于一些后端内容以及使基本的DRb工作.

ruby ruby-on-rails drb sinatra

6
推荐指数
1
解决办法
552
查看次数

停止分布式Ruby服务

我有一个启动DRb服务的脚本,然后生成一个处理程序对象并等待通过DRb.thread.join.我想脚本运行直到明确杀死,所以我补充说

trap "INT" do
  DRb.stop_service
end
Run Code Online (Sandbox Code Playgroud)

它成功地停止了DRb服务并在Ruby 1.8下退出,但在1.9下似乎死锁(在OS X 10.6.7上).采样过程显示出几条线程在旋转semaphore_wait_signal_trap.

我假设我在打电话的方式做错了stop_service,但我不确定是什么.任何人都可以给我任何指示如何正确地去做它?

ruby distributed drb ruby-1.9 ruby-1.8

6
推荐指数
1
解决办法
910
查看次数

创建远程Drb服务器(与pry-remote一起使用)

我一直非常喜欢用Pry开发Ruby应用程序.我还看到了一个名为pry -remote的Pry插件,它允许你设置一个Drb服务器来远程访问Pry会话.README中的pry-remote概要是有道理的,我在本地运行没有问题.但是,我如何使用它来允许同事在他/她的终端中访问相同的Pry会话?

如果可能的话,我想要的API就像localtunnel:

在电脑1上:

$ ruby main.rb
[pry-remote] Waiting for client on druby://127.0.0.1:9876

$ drblocaltunnel 9876
share this url: 
http://xyz.drblocaltunnel.com
Run Code Online (Sandbox Code Playgroud)

在电脑2上:

$ drblocaltunnel login -url http://xyz.drblocaltunnel.com

Frame number: 0/4

From: /programming/drb/main.rb @ line 5 Foo#initialize:

    4: def initialize(x, y)
 => 5:   binding.remote_pry
    6: end
Run Code Online (Sandbox Code Playgroud)

ruby drb pry

5
推荐指数
1
解决办法
891
查看次数

DRb的可靠性如何?

使用DRb实现内存中消息队列和同步进程间的操作时是否需要考虑哪些问题?我听说它可能不可靠,但在网上没有找到任何证实这一说法的内容.

如果它是相关的,那么这些是使用rails应用程序环境运行的进程,它将更新数据库中的模型.

ruby ruby-on-rails drb

4
推荐指数
1
解决办法
840
查看次数

QtRuby与DRb或EventMachine

我想使用Qt在Ruby中编写一个应用程序,它将通过网络与其他实例进行通信.

如何将Qt的事件循环与DRb或EventMachine集成?

编辑:

当我有更多时间发布时,我找到了答案

ruby qt drb qtruby eventmachine

3
推荐指数
1
解决办法
219
查看次数

有没有类似于Distributed Ruby的Python模块

我是Python的新手.只是想知道python中有没有类似ruby的drb的模块?像客户端可以使用drb服务器提供的对象?

ruby python drb

1
推荐指数
1
解决办法
892
查看次数