Следующий код дает мне Timeout::Error
Timeout::Error
open("#{local_file}", 'wb') do |file| file << open(remote_file_url).read end
Как увеличить время ожидания? Файл для загрузки имеет большой размер и обычно занимает более 2 минут в браузере.
Я заметил, что вы открываете удаленный файл "remote_file_url". Я предполагаю, что отсюда истекает время ожидания.
Для начала я написал класс соединения net / http, который включает код тайм-аута, который вы можете использовать или смоделировать. https://github.com/bf4/Notes/blob/master/code/connection.rb (я считаю, что открытый метод использует net / http)
Вы также можете получить ответ в блоке
например. что-то вроде
local_file, url, timeout = 'foo', 'http://www.example.com/index.html', 60 File.open(local_file, 'wb') do |file| uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.open_timeout = timeout http.read_timeout = timeout http.use_ssl = (uri.scheme == 'https') http.request_get(uri.request_uri) do |response| response.read_body do |segment| file.write(segment) end end end
см. http://www.ruby -doc.org / stdlib-1.8.7 / libdoc / net / http / rdoc / Net / HTTPResponse.html и http://www.ruby -doc.org / stdlib -1.8.7 / libdoc / сеть / HTTP / RDoc / Net / HTTP.html