我们有一个客户端 - 服务器架构,它使用Google Drive在客户端和服务器之间共享文件,而无需实际发送它们。
客户端使用Google Drive API获取要与服务器共享的所有文件的文件ID列表。
然后,服务器使用适当的授权令牌下载文件
服务器响应时间对用户体验至关重要。
我们尝试了几种方法:
首先,我们使用了webContentLink。这一直有效,直到我们开始从客户端接收大文件。而不是获取文件'内容,我们得到一个警告"超过了谷歌可以扫描的最大尺寸"。我们找不到可用于跳过此检查的标头。
其次,我们使用alt = media query param切换到Google API资源网址。这样可行,但我们会点击API配额错误(超出用户速率限制)。由于这是服务器代码,因此它被识别为所有请求的单个用户。
然后我们添加了quotaUser param来代表每个请求所针对的用户。我们还有很多403回复。
此外,我们为失败的请求实现了指数退避。
我们还为成功请求添加了缓存。
我们目前的解决方案是两者的结合。尽可能使用webContentLink(似乎不会影响Google API配额)。如果响应不符合预期(即html,错误的大小等),我们会尝试使用Google API资源网址(指数退避)。
(大多数文件足够小,不超过扫描尺寸限制)
客户端和服务器都使用相同的OAuth 2.0客户端ID。
以下是我的问题:
1.是否可以跳过病毒扫描,以便可以使用webContentLink下载所有文件?
2.是否记录了病毒扫描的大小阈值?假设我们知道文件大小,我们就可以保存第一个请求的往返(使用webContentLink)
除了申请更高的配额外,还有什么我们可以做的吗?
答案 0 :(得分:0)
如果大于25MB,则无法使用webContentLink,但由于您使用的是授权请求,请使用{strong> alt=media
files.get。应用适当的错误处理选项(使用指数退避完成)。下一步是检查您的代码是否已经过优化,然后检查并应用建议的优化后仍然收到错误403限制超出,申请更高配额的时间。
要回答这个问题,您可以参考Google云端硬盘帮助论坛:How can I successfully download large files from google drive without network errors at the most end of the download:
只能扫描小于25 MB的文件以查找病毒。
在申请更高的配额之前,您可以执行以下操作:
完成所有优化后,唯一的选择是申请更高的配额限制。
希望这有帮助!