Node.js这里的开发人员必须和Ruby一起工作,所以我对Ruby中的很多概念都很陌生,可以使用一些帮助。内存在Ruby中转换流?
我的用例是,我必须从S3下载非常大的换行符分隔的JSON文件,将数据转换并放回到S3,所有这些都在内存中,而不会将任何内容写入磁盘。
在节点,我可以做这样的事情:
s3DownloadStream('my-file').pipe(transformStream).pipe(backToS3Stream)
这将改变在运行的对象,因为他们进来,把他们S3兼任。
我很难找到一个很好的行动计划,以在Ruby中实现相同的行为。我已经看到IO.pipe和Celluloid :: IO作为可能的选择,但他们似乎还不像他们能够做到这一点。
也许这将有助于:https://aws.amazon.com/blogs/developer/downloading-objects-from-amazon-s3-using-the-aws-sdk-for-ruby/ –
@AlexandreAngelim我看到了文章,但似乎是要将大文件下载到磁盘或内存IO。在那篇文章中,我没有看到任何能够通过变换来下载下载并同时回到s3的任何内容。我想我将不得不使用fork或Thread.new,但我希望得到一个真实世界的例子,这个例子有人在做一些类似的事情,我可以从中建立起来。 – aloisbarreras
上面的链接可以让你获得大部分途径。查看“使用块”下的代码。不要将每个块写入文件,而是根据需要处理块,然后将结果上载到S3(使用,我假设,分段上传API)。 –