OpenURI Ruby предоставляет опция content_length_proc
, которая позволяет определить* длину контента до начала фактической передачи:
open(url, :content_length_proc => lambda { |content_length|
puts "Content Length: #{content_length}"
}) { |data|
# data.meta, data.read etc.
}
Есть ли способ для этого процесса прервать фактическое полное извлечение?
* Я знаю, что это ненадежно, но в моем случае этого достаточно для простой эвристики.
content-length
ненадежен. Надежным подходом является использование:progress_proc
, которое будет сообщать общее количество байтов каждый раз, когда новый блок вытягивается из сети. Таким образом, вы можете прервать, если вы получите слишком много данных на основе фактически загруженных байтов. - person Dan   schedule 29.07.2015