【问题标题】:Skip if it doesn't respond in a certain amount of time如果在一定时间内没有响应则跳过
【发布时间】:2023-04-03 18:32:02
【问题描述】:

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

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

【问题讨论】:

    标签: ruby file whois


    【解决方案1】:

    使用超时模块

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

    【讨论】:

    • 太棒了!过去一个小时我在谷歌上搜索,但找不到,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多