0

我的 api 每秒最多只允许 10 个请求。我试图通过异步库保持在这个速率限制之下。我已经尝试了多种功能,但它们都不起作用。

Pauseconnect 和 connectStream 为每个项目打开一个事件流。如果您需要查看他们的代码,请告诉我。

async.queue -- 不等待。

var cargo = async.queue(function (task, callback) { 
        setTimeout(
            connectStream(task)
            , 50000);
        callback();
     }, 1);


    for(var j = 0; j < TeamList.length; j++) {

        cargo.push(TeamList[j], function (err) {  

     });

async.eachLimit --在 5 处停止并且没有进展

async.eachLimit(TeamList, 5, pauseConnect, function(err){
                if(err) {console.log(err);}
    });

rate-limiter -- 运行所有这些,无需等待

limiter.removeTokens(1, function() {
      for(var i=0; i< TeamList.length; i++){
            connectStream(TeamList[i]);
      }
    });

async.each-- 不等待只是遍历所有这些

async.each(TeamList pauseConnect, function(err){
                if(err) {console.log(err);}
    });
4

2 回答 2

0

您缺少 async.each 中的回调,它应该是(例如)...

async.each(TeamList pauseConnect, function(err, callback) {
  if(err) {
    console.log(err);
  }
  return callback();
});
于 2015-12-30T05:38:14.927 回答
0

如果有人好奇这对我有用

async.eachLimit(TeamList, 5, function(team, callback){
        setTimeout(function(){
        connectStream(team);
        callback();
       }, (5000));
        }, function(err){
                if(err) {console.log(err);}

    });
于 2015-12-30T20:18:32.000 回答