0

我对可恢复上传到谷歌驱动器有点困惑,我希望有人能善意地澄清一下。

在此页面: https
://developers.google.com/api-client-library/python/guide/media_upload 它指出:

对于大型媒体文件,您可以使用可恢复媒体上传来发送文件,这允许文件以较小的块上传。

还描述了使用 next_chunk() 执行此操作、检查错误和使用指数重试的方法。

所有其他对上传的引用,无论是插入还是更新文件,都使用“resumable=True”,但没有实现“next_chunk”功能。就像在这个页面中一样:https ://developers.google.com/drive/v2/reference/files/insert#examples

这是否意味着“可恢复”由库处理?
如果不是,如果出现错误,是否与前面的示例相同(使用 next_chunk)?
如果我的应用程序应该捕获错误,那么唯一的方法是从头开始上传,因为没有返回成功字节或其他内容。这是正确的方法吗?

同样在此页面:https://developers.google.com/drive/manage-uploads
它指出:

通过可恢复上传,您可以将文件分成块并发送一系列请求以按顺序上传每个块。这不是首选方法,因为存在与额外请求相关的性能成本,并且通常不需要。

这两种说法中哪一种是正确的?

提前感谢您的任何意见。
安德烈亚斯

4

1 回答 1

0

安德烈亚斯,

我相信带有 resumable=true 属性的 service.files.insert().execute() 的作用类似于您发布的示例中的手册 next_chunk ...我不确定它是如何处理它的,因为我不能找不到读取源代码的方法(我只是从 python 开始),但是如果我使用 .insert().execute() 方法和 resumable=true 中断大文件的上传,则其中一行输出是这样的:

File "/usr/lib/python2.5/site-packages/apiclient/http.py", line 656, in execute
  _, body = self.next_chunk(http=http)

但是,我找不到使用此方法获取进度指示器的方法,因此我更喜欢使用手动 request.next_chunk() 来代替。

关于可恢复上传的性能成本,有额外的信息被发送,但我认为它不会减慢这个过程......你可以使用更大的块大小(一些 MiB),这样额外的请求字节可以忽略不计。在某些情况下,SDK 文档确实支持可恢复上传:

“为了更可靠地上传数据文件,您可以使用可恢复上传协议。该协议允许您在通信故障中断数据流后恢复上传操作。如果您正在传输大文件并且可能网络中断或其他一些传输故障很高,例如,从移动客户端应用程序上传时。它还可以在网络故障时减少您的带宽使用,因为您不必从头开始重新启动大文件上传。 "

于 2013-01-12T22:22:10.563 回答