我正在從事一個項目,該項目涉及將Flash視頻文件從許多地理分佈的節點上傳到S3存儲桶。限制紅寶石文件流
每個視頻文件大約2-3mb,我們每十分鐘只發送一個文件(每個節點),但是我們消耗的帶寬需要限制在20k/s左右,因爲這些節點正在傳輸流媒體到CDN,由於我們的位置,我們只能獲得最大512k的上傳。
我一直在研究ASW-S3 gem,雖然它不提供任何種類的速率限制,但我知道您可以傳入IO流。鑑於此,我想知道是否有可能創建一個覆蓋方法的速率限制流,添加速率限制邏輯(例如以最簡單的形式在讀取之間調用sleep
),然後調用超級函數重寫的方法。
我考慮的另一個選擇是竊取Net :: HTTP的代碼,並將速率限制放入使用while
循環的send_request_with_body_stream
方法中,但我並不完全確定哪個是最佳選項。
我試圖在擴展IO類,但是根本不起作用,只是從類繼承class ThrottledIO < IO
沒有做任何事情。
任何建議將不勝感激。