如果它在一定时间内没有响应则跳过

Skip if it doesn't respond in a certain amount of time

我创建了一个程序,可以从 google 中提取网站,然后将它们剥离到基本的 url:示例 http://google.com/search/owie/weikw => http://google.com。然后将这些保存到文件中。

之后它在文件上运行 .each_line 然后运行 ​​whois 命令,我想做的是如果命令在一定时间内没有响应,跳过它文件行并转到下一个,有什么办法可以做到这一点?

使用超时模块

如果您的 scraper 或 whois 本身不支持超时,您可以使用 Timeout::timeout 以秒为单位设置上限。例如:

require 'timeout'

MAX_SECONDS = 10 

begin
  Timeout::timeout(MAX_SECONDS) do
    # run your whois
  end
rescue Timeout::Error
  # handle the exception
end

默认情况下,如果块超过时间限制,这将引发 Timeout::Error 异常,但如果您愿意,可以让该方法引发其他异常。你如何处理异常取决于你。