firebase-queue,工作人员接收任务的速率会有延迟

时间:2017-01-13 18:06:03

标签: javascript firebase firebase-realtime-database firebase-queue

我将100个任务推送到客户端的队列中,就像这样。

var ref = firebase.database().ref('queue/tasks');
for(var i = 0;i<100;i++){
 ref.push({'foo': 'bar',i:i})
};

在服务器上,我的工作人员看起来像这样

var queue = new Queue(ref, function(data, progress, resolve, reject){
  console.log(data);
  resolve();
}

问题是要完成所有任务的处理,需要 60秒,这是慢的方法。我的工人有没有办法更快地接收任务。我想使用我的客户端的队列向服务器发送请求。但是根据队列的当前速度,我将无法支持许多并发用户。我期待支持50k并发用户。

1 个答案:

答案 0 :(得分:1)

我注意到的一件事是你没有传递任何选项,你可以设置一些同时从你的队列中提取的工人。

options = {
  'numWorkers': 5,
  'sanitize': false,
  'suppressStack': true,
}    
var queue = new Queue(ref, options, function(data, progress, resolve, reject){
  console.log(data);
  resolve();
})

然而,虽然我确实注意到我的机器速度有所增加,但是有1名工人,我的过程在大约9秒钟内完成了100次,但是有5名并发工作者在大约5秒内完成了。

我正在使用全新的13&#34;带有i7芯片的MacBookPro。

我使用performance-now来执行基准测试,然后在设置队列之前执行此操作:

var start = now();

并且在队列

中的 resolve()之后
console.log(((now()-start)/1000).toFixed(3));