如果在一定时间内没有响应,请跳过

时间:2016-03-06 23:09:43

标签: ruby file whois

我创建了一个程序,可以将网站从谷歌中删除,然后将其删除到基本网址:例如http://google.com/search/owie/weikw => http://google.com。然后将它们保存到文件中。

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

1 个答案:

答案 0 :(得分:2)

使用超时模块

如果您的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异常,但如果您愿意,可以使用该方法引发其他异常。您如何处理异常取决于您。