用例
我们在这里讨论的是大文件(最小 100mb,
目标
优化从 Zenodo 上传和/或下载数据的性能。
上传
尽快将数据从 Zenodo 转移。 使用 1) JavaScript(浏览器)和/或 2) Python (API)。
_客户端_
JavaScript:块文件(许多现有的库都支持这个 - 例如 PLUpload),并行上传块(在任何地方都没有看到这个 - 可以使用例如 javascript web worker)。
Python:与 JavaScript 相同 - 块/并行化 + 查看 HTTP 管道和 TCP 层。
需要考虑的问题:
_服务器端_
下载
示例 1:1000 个文件中的 260GB 数据集。 研究人员如何无需单击 1000 个链接即可轻松下载文件。
示例 2:4 个文件中的 260GB 数据集。 如果网络连接丢失(即可恢复下载)会发生什么情况。
_客户端_
也许可以编写一个 JavaScript 应用程序来帮助下载 1000 个文件。 相同的应用程序可以帮助进行可恢复下载。 同样,Javascript Web Worker 模型可能用于分块下载文件。
_服务器端_
实现对 HTTP 范围请求的支持。 像上传(流程模型和并发下载)。 例如,缓慢的客户端花时间下载文件将填满线路。
范围外(但应讨论):优化文件交付的其他方法,如内容交付网络。
Python 部分将主要进入 inveniosoftware/invenio-files-rest
JavaScript 部分将是单独的存储库。
很抱歉在一个有点偏离主题的方向上重新提出这个老问题......我非常希望 Zenodo HTTP 服务器支持原始评论中提到的 HTTP 范围请求。 据我所知,他们目前还没有获得荣誉。 目前这在路线图上吗?
有没有比使用普通互联网浏览器下载大文件更好的方法? http 上的大文件往往会在数小时内失败,并且无法恢复下载。
就我而言,我正在尝试下载 50 GB 的数据集。
下载速度大约为 500 Kbps,并且在下载持续的 12 小时内连接失败。
几个月来我一直在尝试每天下载它(我需要我的硕士论文的数据集)。
有什么建议?
5 次尝试后我什至无法下载 2.2 GB 的数据集,下载管理器也无济于事。
@Vichoko ,您设法解决了吗? 如果是,如何?
我也很沮丧地尝试下载一个包含两个大文件(12Gb 和 37Gb)的数据集。
我找到了https://zenodo.org/record/1261813 (https://gitlab.com/dvolgyes/zenodo_get),它确实有很大帮助。 我第一次尝试下载了整个记录。
乍一看,我看不出它有什么神奇之处,所以我猜这个技巧一定是在wget的 Python 实现的一些内部结构中。
Link: https://zenodo.org/api/files/cb4ca1fa-1db1-40f9-8f39-0e9d3b2af7ae/musdb18hq.zip size: 21607.1 MB
0% [ ] 3121152 / 22656664047
2006 年,我可以通过拨号更快地下载 21GB 的文件。 Zenodo 是否缺乏 CDN 基础设施? 为什么不使用 S3 或 GCS 存储桶?
鉴于 Zenodo 表现出异常缓慢和不稳定的下载,我认为应该重新打开这个问题。 或者如果有另一个问题来跟踪 Zenodo 下载?
最有用的评论
有没有比使用普通互联网浏览器下载大文件更好的方法? http 上的大文件往往会在数小时内失败,并且无法恢复下载。
就我而言,我正在尝试下载 50 GB 的数据集。
下载速度大约为 500 Kbps,并且在下载持续的 12 小时内连接失败。
几个月来我一直在尝试每天下载它(我需要我的硕士论文的数据集)。
有什么建议?