像RequestsLimitError那样得到错误:您刚刚在节点js中对instagram API提出了太多请求?

时间:2017-11-11 06:55:50

标签: node.js instagram-api

我在节点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');
                }
            }                
        });

任何人都知道如何解决这个问题,请帮助我。

1 个答案:

答案 0 :(得分:0)

您的setTimeout使用不正确,所有API调用都会在10000次延迟后立即生成。

由于这是一次性工作,只需将20K用户名拆分为4K批次,然后每小时执行一次。这样,您将达到5k / hr API限制