我正在从事一个项目,该项目涉及将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
没有做任何事情。
任何建议将不胜感激。