我们正在下载一个非常大的文件(~70G),但有一次代码完成时没有抛出异常,但下载的文件不完整,不到 50G。代码是:public void download(String url, String filename) throws Exception { URL dumpUrl = new URL(url); try (InputStream input = dumpUrl.openStream()) { Files.copy(input, Paths.get(filename)); }}这url是一个预签名的 Google Cloud Storage URL。这只是库没有检测到连接重置问题吗?或者是其他东西?有没有更好的库我可以使用。或者我是否需要先进行 HEAD 调用,然后将下载的大小与内容长度进行匹配。不要在意它不起作用,这种情况发生了,我们有重试逻辑。我的问题是认为它确实有效的代码。更新:所以它似乎在开始下载后正好 2 小时就失败了。这让我怀疑它可能是网络/防火墙问题。不确定在哪一端,我会为我的运营团队找麻烦。有人知道谷歌结束的时间限制吗?忽略此更新 - 现在有更多实例,没有固定时间。20分钟到2小时之间的任何地方。
1 回答
RISEBY
TA贡献1856条经验 获得超5个赞
从未解决核心问题。但是能够通过比较下载到Content-Length
标头的字节来解决。在一个循环中工作,使用Range
标头恢复不完整的下载(类似于curl -C -
)。
添加回答
举报
0/150
提交
取消