2017-11-11 32 views
0

我在节点js中使用isntagram api。我有一个阵列,并在阵列商店20k以上的Instagram ID。然后我被一个拿Instagram的ID做阵列上的foreach和一个去取生物,但我得到错误像RequestsLimitError那个时候:你刚才提出太多要求,Instagram的API。我设置了超时后,每5个电话也尝试,但仍然我得到同样的错误,所以如何解决这个错误任何人知道如何解决它,然后请让我知道。获取错误与RequestsLimitError类似:您只是向节点js中的instagram API发出太多请求?

这里,这是我的代码=>

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

有一些限制https://www.instagram.com/developer/limits/ – Molda

+0

@Molda不可能使用setimeout并修复这个问题是可能的吗? – Edit

+0

每小时限制为500或5000(沙盒或实时应用)请求,因此请调整您的超时时间,以确保不超过限制。 – Molda

回答

0

你的setTimeout是使用不当,所有的API调用在后一次10000迟延。

由于这是一次性的工作,只是分裂20K用户名到4K批次和执行他们每隔一小时。这样,你将在5k/hr的API限制下