我们希望将文件从远程URL下载到内存,然后将其上传到某个公共云。我计划在Ruby中使用Copy_Stream lib。然而,我不确定这是否可以实现,因为我还需要以不会影响性能的方式维护内存和CPU统计数据。
有什么建议或例子如何通过Ruby中的Copy_Stream lib来实现这一点吗?考虑到性能,我们有没有其他库来实现这一点?
https://ruby-doc.org/core-2.5.5/IO.html
我们希望将文件从远程URL下载到内存,然后将其上传到某个公共云。我计划在Ruby中使用Copy_Stream lib。然而,我不确定这是否可以实现,因为我还需要以不会影响性能的方式维护内存和CPU统计数据。
有什么建议或例子如何通过Ruby中的Copy_Stream lib来实现这一点吗?考虑到性能,我们有没有其他库来实现这一点?
https://ruby-doc.org/core-2.5.5/IO.html
2条答案
按热度按时间3ks5zfa01#
您可以将src/dst设置为响应读/写的简单IO抽象:
lx0bsm1f2#
sendfile()
。发送文件是一个基于内核的复制流过程。就内存使用和性能而言,没有比这更快的了。您的申请将不会参与转移。
对于
sendfile()
,输出套接字必须支持零复制,并且输入文件必须支持mmap()
。通常,这意味着您已经将文件下载到本地文件,在复制过程中不更改下载的文件,并且您对输出具有打开的套接字。