HTTParty的内存问题并下载大文件

时间:2012-02-16 01:12:07

标签: ruby-on-rails ruby ruby-on-rails-3 memory httparty

这是否会导致Ruby出现内存问题。我知道如果大小超过10KB,Open-URI会写入TempFile。但HTTParty会在写入TempFile之前尝试将整个PDF保存到内存中吗?

src = Tempfile.new("file.pdf")
src.binmode
src.write HTTParty.get("large_file.pdf").parsed_response

1 个答案:

答案 0 :(得分:11)

您可以使用Net :: HTTP。请参阅the documentation(特别是标题为" Streaming Response Bodies&#34的部分;)。

以下是文档中的示例:

uri = URI('http://example.com/large_file')

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri.request_uri

  http.request request do |response|
    open 'large_file', 'w' do |io|
      response.read_body do |chunk|
        io.write chunk
      end
    end
  end
end