我有一个rpc服务器,我怎么能定期做一些事情

时间:2015-10-23 05:44:21

标签: ruby multithreading server rpc

require 'jimson'
require 'ParseConfig'


class NodeHandler
  extend Jimson::Handler 

  def sum(a,b)
    a + b
    puts a+b
  end
end



server = Jimson::Server.new(NodeHandler.new, 
     :host =>  '127.0.0.1',
     :port =>  8888)
server.start # serve with webrick on http://0.0.0.0:8888/

# def foo(a,b)
   ...
#  end
###I want to call this function each 5s for exmaple

我有一个像上面这样的rpc服务器。它现在非常简单,提供了一个总和功能。 我还需要每个10秒的逻辑,我调用一些名为foo()的函数。 但现在,此服务器启动并等待RPC客户端消息。我该如何做周期性功能?

由于

1 个答案:

答案 0 :(得分:0)

好的,我会回答我自己的问题。 我发现有一个“作品”宝石可以解决我的问题。 我将服务器作业委托给另一个线程。 通过这样做,我可以使用主线程做任何我想做的事情。

所以我做了这样的事情:

# Initialize a worker pool.
pool = Workers::Pool.new(:on_exception => proc { |e|
  puts "A worker encountered an exception: #{e.class}: #{e.message}"
})

pool.perform do
  server = Jimson::Server.new(NodeHandler.new, 
     :host =>  '127.0.0.1',
     :port =>  port)
  server.start # serve with webrick on http://0.0.0.0:8999/
end