2014-05-09 77 views
0

我有一個從url讀取並檢索一些數據的工作者。所以我用池,以實現10名併發工人的併發:如何停止賽璐珞的「終止任務」消息?

require 'nokogiri' 
require 'open-uri' 
require 'celluloid/autostart' 

class WebWorker 
    include Celluloid 
    def get_data 
     url = "http://example.com/" 
     doc = Nokogiri::HTML(open(url), nil, "UTF-8") 
     { data: doc.css("body h1")[0].content.strip } 
    end 
    end 

pool = WebWorker.pool(:size => 10) 
10.times do |t| 
    futures = 10.times.map{ |t| pool.future(:get_data) } 
    results = futures.map(&:value) 
end 

放到一個文件名爲some_name.rb上面的代碼,運行它,您將獲得:

d [ 2014-05-09T10:15:06.061071#6588] DEBUG - :終止15 演員... W,[2014-05-09T10:15:06.063755#6588] WARN - :終止 task:type =:finalizer ,meta = {:method_name =>:shutdown}, status =:callwait

我的問題是如何暫停這些消息?包裝在一個開始......救援並沒有幫助。而且,爲什麼會出現警告,代碼有什麼問題?

謝謝!

回答

0

需要添加:

# Use the logger of your Rails application. 
Celluloid.logger = Rails.logger 
0

程序退出之前終止池的鏈接:

pool.links.each(&:terminate) 
+0

難道您還添加了一些解釋? – Robert