我将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并发用户。
答案 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));