我有1000条记录需要击中速率受限的API端点。我想让它在任何时候只有5个URL的调用,这样我就不会同时发出1000个请求。我怎样才能做到这一点?我有以下几点:如何使它能够在javascript中一次执行10个承诺以防止API调用的速率限制?
var Promise = require("bluebird");
var geocoder = Promise.promisifyAll(require('geocoder'));
var fs = require('fs');
var async = require('async');
var parse = require('csv-parse/lib/sync');
var inputFile = './myaddresses.txt'
var file = fs.readFileSync(inputFile, "utf8");
var records = parse(file, {columns: true});
var promises = [];
for(var i = 0; i < records.length; i++) {
var placeName = records[i]['Place Name'];
promises.push(geocoder.geocodeAsync(placeName));
}
Promises.all(promises).then(function(result) {
result.forEach(function(geocodeResponse) {
console.log(geocodeResponse);
})
}
什么是你必须留在实际速率限制?这是几个请求/秒?或者是其他东西? – jfriend00
我不确定,这是Google Geocoding API。 – Rolando
如果你想要保持在限制的范围内,你应该做一些谷歌研究,看看费率限制是什么以及如何测量。没有这些信息,你只是在做一个猜测和测试解决方案,它永远不会被优化,并且可能会不一致。 – jfriend00