打开事件源,同时保持在 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);}
});
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);}
});