需要一个ruby解决方案来在单独的进程中执行方法

时间:2010-08-12 05:16:06

标签: ruby process asynchronous eventmachine workling

我正在实现一个轮询器服务,其界面如下所示。

poller = Poller.new(SomeClass)
poller.start
poller.stop

start方法应该不断启动命中http请求并更新数据库中的内容。一旦start编辑,该过程应该继续,直到明确stop为止。

我知道start的实现需要在新进程中生成并运行。我不太确定如何在Ruby中实现这一点。我想要一个ruby解决方案而不是ruby框架特定的解决方案(不是rails插件或sinatra扩展。只是ruby gems)。我正在探索eventmachine和starling-workling。我发现eventmachine太大而无法在短时间内理解,而workling是一个插件而不是宝石。因此,为Ruby应用程序工作是一件痛苦的事。

我需要指导如何实现这一目标。有什么指针吗?代码示例将有所帮助。

修改

Eventmachine或starling-workling解决方案优于线程/分叉。

3 个答案:

答案 0 :(得分:2)

您不能使用Process#kill中的示例:

class Poller
  def initialize klass
    @klass = klass
  end

  def start
    @pid = fork do
      Signal.trap("HUP") { puts "Ouch!"; exit }
      instance = @klass.new
      # ... do some work ...
    end
  end

  def stop
    Process.kill("HUP", @pid)
    Process.wait
  end
end

答案 1 :(得分:0)

class Poller

    def start
       @thread = Thread.new { 
           #Your code here
       } 
    end


    def stop
       @thread.stop
    end

end

答案 2 :(得分:0)

您是否考虑过Daemons宝石?

相关问题