Я работаю над проектом, который включает загрузку флеш-видеофайлов в корзину S3 с нескольких географически распределенных узлов.
Размер видеофайлов составляет около 2-3 МБ каждый, и мы отправляем только один файл (на узел) каждые десять минут, однако потребляемая пропускная способность должна быть ограничена скоростью ~ 20 К / с, поскольку эти узлы обеспечивают потоковую передачу. мультимедиа в CDN, и из-за местоположения мы можем получить максимум 512 тыс. загрузок.
Я изучал драгоценный камень ASW-S3, и хотя он не предлагает какого-либо ограничения скорости, я знаю, что вы можете передавать в IO Stream. Учитывая это, мне интересно, возможно ли создать поток с ограниченной скоростью, который переопределяет метод read
, добавляет логику ограничения скорости (например, в простейшей форме - вызов sleep
между чтениями) и затем вызывает супер переопределенного метода.
Другой вариант, который я рассмотрел, - это взлом кода для Net :: HTTP и помещение ограничения скорости в метод send_request_with_body_stream
, использующий цикл while
, но я не совсем уверен, какой из них будет лучшим.
Я пытался расширить класс IO, однако это не сработало вообще, просто наследование от класса с помощью class ThrottledIO < IO
ничего не сделало.
Любые предложения будут с благодарностью.