whoisを使用して、whois クエリを実行および解析しています。問題は、もっと多くのことを実行する必要があることです。何千も何千も。非同期パッケージem-whoisを見つけました。これは私にとって完璧に思えます。これは、 Ruby ファイバーとem-synchronyに依存するwhoisの単純なアドオンです。
whois クエリを実行する現在のコードは次のようになります。
...
c = Whois::Client.new(:timeout => timeout)
r = c.query(domain)
...
em-whoisをインストールした後、この基本的な例を拡張しようとしています。
私のコードは次のようになりましたが、それでも非常に遅いです:
$: << File.dirname(__FILE__) + '/../lib'
require 'em-whois'
EM.synchrony do
domain = ARGV[0] || "github.com"
$i = 0;
$num = 100;
arr = Array.new($num)
# perform all queries
begin
puts("Inside the loop i = #$i" );
$i += 1;
arr[$i] = Whois.whois(domain);
end while $i < $num
$i = 0;
# get all results
begin
$i += 1;
puts "\r#{domain}\n#{"-" * domain.length}"
[:available?, :status, :expires_on].each do |k|
puts "#{k}: #{arr[$i].properties[k]}"
end
end while $i < $num
EM.stop
end
whoisとem-whoisの非同期機能を使用してバッチ クエリ (1k のドメイン) を実行するにはどうすればよいですか?
私は以前にルビーの経験がありません。私は Python/C/PHP 開発者です。助けてください。