目前,我们的应用程序对Google Drive API进行了大量调用,以检索更改,权限,文件等。目前,我们正在处理403rateLimitExceeded
错误。
根据此处的文档,有两种解决方案:
我们希望实施批处理以帮助减少错误。但是,根据此处的文档:
批处理在一起的一组n个请求计入您的使用限制,即n个请求,而不是一个请求。在处理之前,将批处理请求分解为一组请求。
我想我的问题是,作为单个批处理的一部分的一组n个请求是否仍计为速率限制下的n个请求?这意味着如果一个批处理包含的请求与触发403的请求一样多rateLimitExceeded
,是否仍会返回该错误?
非常感谢您的协助。
是的,单批处理的n个请求的集合实际上算作n个使用率限制的请求。除了您在问题中提到的注释之外,文档的其他部分(例如this)还描述了以下内容:
服务器接收到批处理的请求后,它将外部请求的查询参数和标头(视情况而定)应用于每个部分,然后将每个部分视为独立的HTTP请求。
从前面的注释信息中可以很明显地看出,批处理请求中的每个请求都计为一个单独的请求,因此计入速率限制。
但是,如果出现错误403:速率限制超出,则问题不在于发出的请求总数,而是发出请求的速率(可能在很短的时间内就太多了)。因此,建议您使用指数退避(如果发送速度过快,脚本会在一定的等待时间后尝试发送回请求)或使用批处理请求(每批最多只能发送100个请求,这样可以减少服务器的开销)。
我建议您同时使用两者。如果要求您发出多个批处理请求(因为您发出的请求超过100个),我建议您对这些批处理请求使用指数补偿。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句