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 -- : 終了タスク: type=:ファイナライザー、meta={:メソッド名=>:シャットダウン}、ステータス=:callwait
私の質問は、これらのメッセージを一時停止するにはどうすればよいですか? begin..rescue でラップしても役に立ちません。また、警告が表示されるのはなぜですか。コードに何か問題がありますか?
ありがとう!