Проблемы с памятью при HTTParty и загрузке больших файлов - PullRequest
5 голосов
/ 16 февраля 2012

Это может вызвать проблемы с памятью в Ruby. Я знаю, что Open-URI пишет в TempFile, если размер превышает 10 КБ. Но попытается ли HTTParty сохранить весь PDF в памяти перед записью в TempFile?

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

1 Ответ

11 голосов
/ 16 февраля 2012

Вы можете использовать Net :: HTTP.См. документацию (в частности, раздел, озаглавленный «Потоковые ответные тела»).

Вот пример из документов:

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
...