2012-12-22 41 views
0

我对可恢复的上传到谷歌驱动器有点困惑,我希望如果有人能够友好地澄清一些事情。正确使用python客户端库的可恢复上传

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

对于大型媒体文件,您可以使用断点续传媒体上传来发送文件,这使得文件以小块上传。

还描述了使用next_chunk(),检查错误和使用expotential重试的方法。

所有其他提及上传(插入或更新文件)的引用都使用“resumable = True”,但未实现“next_chunk”功能。像本页内容:https://developers.google.com/drive/v2/reference/files/insert#examples

这是否意味着“可恢复”是由库处理的?
如果不是,在发生错误的情况下,是否与上例(使用next_chunk)相同?
如果我的应用程序应该捕获错误,那么唯一的办法就是从一开始就开始上传,因为没有成功字节或其他东西的返回。这是正确的方式吗?

也就在这个页面:https://developers.google.com/drive/manage-uploads
它指出:

随着断点续传,可以打破一个文件分割成块,并发送一系列请求上传每个块的序列。这不是首选的方法,因为与额外请求相关的性能成本,并且通常不需要。

这两个陈述中哪一个是正确的?

在此先感谢您的任何意见。
安德烈亚斯

回答

0

安德烈亚斯,

相信service.files.insert()执行()与可恢复= true属性确实类似于手动next_chunk东西你张贴...我的例子我不知道它究竟如何处理它,因为我找不到一种方法来读取源代码(我刚刚开始使用python),但是如果我使用.insert()函数中断上载大文件execute( )方法可恢复= true,则输出的线路之一是这样的:

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

但是,我无法找到一种方式来获得一个逐行ss指示符,所以我更愿意使用手动request.next_chunk(),而不是。

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

“要更可靠地上传数据文件,可以使用可恢复的上传协议。此协议允许您在通信故障中断后恢复上传操作数据流。如果您传输的是大文件,并且网络中断或某些其他传输失败的可能性很高,例如从移动客户端应用上传时,此功能尤其有用。它还可以在发生网络故障时减少带宽使用量,因为您不必从头开始重新启动大文件上传。“