如果它在一定时间内没有响应则跳过
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 异常,但如果您愿意,可以让该方法引发其他异常。你如何处理异常取决于你。
我创建了一个程序,可以从 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 异常,但如果您愿意,可以让该方法引发其他异常。你如何处理异常取决于你。