Пропустить, если он не отвечает в течение определенного времени
Я создал программу, которая извлекает веб-сайты из Google, а затем выводит их на основной URL: пример http://google.com/search/owie/weikw => http://google.com/. Затем он сохраняет их в файл.
После этого он запускает .each_line
на файл затем запускает 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, если блок превышает ограничение по времени, но вы можете сделать так, чтобы метод вызывал другие исключения, если вы предпочитаете. То, как вы обрабатываете исключения, зависит от вас.