如何解决fetchAll() 答案:研究:结论:参考:
对 URLFetchApp.fetchAll()
的单次调用是否有最大数量的提取请求?我对 AppScripts 的经验有限,在文档上找不到任何表明请求数量有限制的内容,但我很想知道是否存在限制。欢迎任何意见。
提前致谢
解决方法
答案:
扩展 Tanaike 在他的 benchmarking research for UrlFetchApp.fetchAll()
中进行的研究。我能够成功发出 2199 个请求,但更多的请求触发了端点的速率限制,因此我无法进一步测试。
研究:
阅读上述基准测试后,我使用 Apps Script 来查看是否可以找到该方法的限制。我使用 httpbin 进行测试,因为这是 Google 在 fetchAll(requests)
的示例代码段中提供的:
// Make both a POST request with form data,and a GET request.
var resumeBlob = Utilities.newBlob('Hire me!','text/plain','resume.txt');
var formData = {
'name': 'Bob Smith','email': 'bob@example.com','resume': resumeBlob
};
// Because payload is a JavaScript object,it is interpreted as
// as form data. (No need to specify contentType; it defaults to either
// 'application/x-www-form-urlencoded' or 'multipart/form-data')
var request1 = {
'url': 'https://httpbin.org/post','method' : 'post','payload' : formData
};
// A request may also just be a URL.
var request2 = 'https://httpbin.org/get?key=value';
UrlFetchApp.fetchAll([request1,request2]);
我通过初始化一个长度为 n
的数组并用如下请求填充它来修改它:
function fetchAllTester() {
var resumeBlob = Utilities.newBlob('Hire me!','resume.txt');
var formData = {
'name': 'Bob Smith','resume': resumeBlob
}
var request1 = {
'url': 'https://httpbin.org/post','payload' : formData
}
let requests = new Array(1000).fill(request1)
UrlFetchApp.fetchAll(requests).map(x => console.log(x.getContentText()))
}
我从 1000 开始,因为这已经被证实有效。结果如下:
- 2000 个请求 - 有效
- 2500 个请求 -
HTTP 502
由 httpbin 返回。 - 2001 个请求 - 有效
- 2100 个请求 - 有效
- 2200 个请求 -
HTTP 502
由 httpbin 返回。 - 2199 个请求 - 有效
- 2199 个请求 -
HTTP 502
由 httpbin 返回。
此时,发送 2199 个请求似乎是间歇性响应,但出现 HTTP 502: Bad Gateway 错误,指出问题来自 fetchAll()
方法之外。
结论:
似乎存在对 UrlFetchApp.fetchAll()
的限制,然后它很高。
从 Quotas for Google Services page 开始,列出的唯一调用限制是:
功能 | 消费者(例如 gmail.com)和 G Suite 免费版 (legacy) | Google Workspace 帐户 |
---|---|---|
网址提取调用 | 20,000 / 天 | 100,000 / 天 |
因此,根据我所做的测试和 Google 提供的文档,我的假设是该方法仅受常规 Apps 脚本配额的限制;也就是说,消费者帐户每天有 20,000 个请求,Workspace 帐户每天有 100,000 个请求。
希望对你有帮助!
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。