我在节点js中使用isntagram api。我有一个数组,并在数组存储超过20k的Instagram ID。然后我在那个阵列上做foreach并且逐个接受instagram id并去获取bio但是那个时候我得到错误这个 RequestsLimitError:你只是提出了太多请求instagram API 。我在设置超时之后尝试每5个电话,但我仍然得到同样的错误,所以如何解决这个错误任何人都知道如何解决它然后请让我知道。
这是我的代码=>
var InstaId = ["12345687",20k more id store here in the array]
var changesessionFlage = 0;
async.each(InstaId, function (id, callback) {
async.parallel([
function (cb) {
if (id) {
setTimeout(function () {
Client.Account.getById(sess, id).then(function (bio) {
console.log("changesessionFlage" + changesessionFlage);
changesessionFlage++
//console.log("bio : ", bio._params); // here i am getting bio one by one user
if (changesessionFlage == 6) {
changesessionFlage = 0;
}
cb(null, bio._params);
})
.catch(function (err) {
console.log("get boi: ", err)
cb(null, bio._params);
})
}, (changesessionFlage == 5) ? 10000 : 0)
}
}
], function (err, results) {
if (err) {
console.log(err);
return;
}
Result = results
callback();
});
}, function (err) {
if (err) {
console.log(err);
return;
}
else {
console.log("Result=>", Result)
if (Result) {
console.log("Result[0]=>", Result[0])
var ws = XLSX.utils.json_to_sheet(Result[0]);
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "People");
var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
res.end(wbout, 'binary');
}
}
});
任何人都知道如何解决这个问题,请帮助我。
答案 0 :(得分:0)
您的setTimeout使用不正确,所有API调用都会在10000次延迟后立即生成。
由于这是一次性工作,只需将20K用户名拆分为4K批次,然后每小时执行一次。这样,您将达到5k / hr API限制