打开事件源,同时保持在 Nodejs 的速率限制之下

Opening eventsources while keeping under the rate limit with Nodejs

my api 每秒最多只允许 10 个请求。我正在尝试使用异步库保持在这个速率限制之下。我尝试了多种功能,但其中 none 有效。

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);}
    });

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

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

如果有人好奇这对我有用

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

    });