我正在使用whois来执行和解析 whois 查询。问题是:我需要做得更多。成千上万。我找到了异步包em-whois,这对我来说听起来很完美。这是whois的简单插件,它依赖于Ruby Fibers和em-synchrony。
我当前执行 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 开发人员。请帮忙。