В настоящее время я использую Net::HTTP
в сценарии Ruby для публикации файлов на веб-сайте с помощью составной публикации. Он отлично работает для небольших файлов, но мне часто приходится отправлять очень большие файлы с помощью этого сценария, и HTTP#post
, кажется, принимает данные только как объект String
, что означает, что файл, который я отправляю, должен быть прочитан в память, прежде чем что-либо может быть отправлено. Этот сценарий выполняется на занятом производственном сервере, поэтому недопустимо тратить сотни мегабайт оперативной памяти только для отправки файла.
В идеале, должен существовать метод, которому можно присвоить размер буфера и объект IO
, и который будет отправлять куски данных размером с буфер, считывая из объекта IO
только по мере необходимости. Что было бы лучшим способом сделать это? Я что-то упустил в Net::HTTP
?
Обновление : Net::HTTP#body_stream(input)
выглядит хорошо, хотя документация довольно ... скудная. Кто-нибудь может указать мне хороший пример этого в действии?