グローバルな並列リクエスト数と、ホスト毎の並列リクエスト数を考慮した試作版です。 もう少し改善出来そうな気がします。 require 'rubygems' require 'em-http' require 'addressable/uri' PARALLEL_REQUEST_NUM = 50 PARALLEL_REQUEST_PER_HOST = 2 uris = File.readlines(File.join(File.dirname(__FILE__), 'urls.txt')). map { |v| Addressable::URI.parse(v.strip).normalize rescue nil }.compact pending = { :http => 0, :http_per_host => Hash.new { |h, k| h[k] = 0 } } EM.run