Я использую Typhoeus в качестве примера, но код может быть в любом месте Ruby. Предположим, есть 10000 URLs, которые выглядят так:Возможно ли отказаться от запроса HTTP в Ruby на основе его текущего размера?
http://example.com/somerandomstringwithoutextension
- URL-адреса могут быть любого типа контента - видео, HTML, изображения, ничего.
- Мне нужно только загрузить html-документы и игнорировать остальные для повышения эффективности работы и скорости памяти.
Если я запустил следующий код на видео в 5 ГБ, это приведет к сбою приложения, так как оно попытается загрузить все видео в память.
res = Typhoeus::Request.new(url, timeout: 15, followlocation: true).run
Если я делать запросы ГОЛОВЫ на каждом URL первых, чтобы определить его тип контента и контент-размер, это поможет с проблемой памяти, но это займет почти в два раза больше времени (0,7 сек для запроса головы а затем 0,7 для фактического запроса)
Есть ли способ сделать http-запрос в Ruby, посмотреть, что он в настоящее время передал размер контента и отбросить его, если он достиг определенного предела? Например. если они больше 5 МБ? В качестве альтернативы, оставьте его на основе его содержимого.
Я искал информацию об этом в течение часа, и это, безусловно, лучший и самый тщательный ответ. Спасибо. 'HEAD', а затем' GET'. – MothOnMars