Rails打开()超时。如何删除时间限制?

时间:2011-11-14 17:19:39

标签: ruby-on-rails ruby ruby-on-rails-3.1

以下代码为我提供了Timeout::Error

open("#{local_file}", 'wb') do |file|
  file << open(remote_file_url).read
end

如何增加超时?要下载的文件很大,浏览器通常需要2分钟以上。

1 个答案:

答案 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.htmlhttp://www.ruby-doc.org/stdlib-1.8.7/libdoc/net/http/rdoc/Net/HTTP.html