以下代码为我提供了Timeout::Error
open("#{local_file}", 'wb') do |file|
file << open(remote_file_url).read
end
如何增加超时?要下载的文件很大,浏览器通常需要2分钟以上。
答案 0 :(得分:0)
我注意到你正在打开一个远程文件“remote_file_url”。我想这是超时的来源。
对于初学者,我编写了一个net / http连接类,其中包含可以使用或建模的超时代码。 https://github.com/bf4/Notes/blob/master/code/connection.rb(我相信open方法正在使用net / http)
您还可以在块中获取响应
e.g。
之类的东西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/net/http/rdoc/Net/HTTP.html