Повторное чтение FTP и HTTP URI с помощью Typhoeus? - PullRequest
0 голосов
/ 03 января 2012

Обсудив некоторую обработку ошибок в " Надежно ли закрывает сокеты Ruby после чтения или при сбое? ", я хотел бы углубиться в это немного глубже.

Я хотел бы попытаться получить данные с FTP-сервера, а затем, если это не удастся, попытаться получить данные с http-сервера. Если они оба не удаются, я хотел бы покататься и повторить попытку несколько раз с короткой паузой между попытками (возможно, 1 секунда)

Я читал о методе «retryable» в « Повторная попытка блоков кода в Ruby (исключение, что угодно) », однако retryable-rb может быть более устойчивым.

Был бы признателен, если бы увидел пример из старой шляпы по этому сценарию, так как мне нужен надежный механизм для отбора данных из пары ненадежных источников, которые у меня есть. Как отмечалось в другой ветке, кажется, что Typhoeus мог бы предложить надежный компонент для этого решения.

1 Ответ

1 голос
/ 03 января 2012

Использование одного из этих драгоценных камней может быть хорошей идеей, но без них довольно просто:

data = nil
until data
# or 5.times do
    data = open(ftp_url){|f| f.read} rescue nil
    data ||= open(http_url){|f| f.read} rescue nil
    break if data
    sleep 1
end
...