Articles of 队列

asynchronous队列永远不会随机触发

你好,StackOverflow社区, 我正在继续玩nodejs。 所以下面是我的launch.js应用程序的简要总结 var counter = 0; var queue = async.queue(function(objectWithVariousProperties, callback) { methodDoingVariousAsynchronousStuff(objectWithVariousProperties.link, function(err,result) counter++; callback(); }); }, 20); queue.drain = function() { log.debug("Finished Queue", { "Objects processed" : counter }); }; //TO various iterations over several array and construct some object and then push them in the queue via queue.push(media_object) 我的问题是,80%的过程工作的时间。 应用程序通过shell命令nodejs launch.js启动,处理队列,当队列结束时显示'Finished […]

如何限制(或排队)调用Node.JS中的外部进程?

脚本 我有一个Node.JS服务(使用ExpressJS编写),通过DnD( 示例 )接受图像上传。 上传图片后,我会做一些事情: 从中拉EXIF数据 调整它的大小 这些调用目前正在通过node-imagemagick模块进行处理,我的代码如下所示: app.post('/upload', function(req, res){ … <stuff here> …. im.readMetadata('./upload/image.jpg', function(err, meta) { // handle EXIF data. }); im.resize(…, function(err, stdout, stderr) { // handle resize. }); }); 题 正如你们中的一些人已经发现的那样,问题是如果我有足够的同时上传,那么每一个上传的将会产生一个“身份”调用,然后resize操作(Image Magick),在高负载下有效地杀死服务器。 只要用ab -c 100 -n 100进行testing就可以locking我的小型512 Linode dev服务器,这样我就可以强制重启。 我知道我的testing对服务器来说可能只是太多的负载,但是我想要一个更稳健的方法来处理这些请求,所以我有一个更优雅的失败,那就是虚拟机自杀。 在Java中,我通过创build一个固定线程的ExecutorService来解决这个问题 ,该工作排队工作并在最多X个线程上执行它。 在Node.JS中,我甚至不知道从哪里开始解决这样的问题。 我没有把自己的大脑包装在非线程本质中,以及如何创buildasynchronousJavaScript函数来排队工作,而另一个…(线程?)处理队列。 任何关于如何思考这个或如何处理这个问题的指针将不胜感激。 附录 这与FFMpeg的这个问题不一样,尽pipe我认为一旦他的web应用程序处于加载状态,那么他就会有同样的问题,因为它归结为相同的问题(同时引发太多的并行本地进程)。

是否有可能在kue节点js中更新已经创build的作业

嗨,我正在使用Kue创造就业机会。 jobs.create('myQueue', { 'title':'test', 'job_id': id ,'params': params } ) .delay(milliseconds) .removeOnComplete( true ) .save(function(err) { if (err) { console.log( 'jobs.create.err', err ); } }); 每个工作都有一个延迟时间,通常是3个小时。 现在我将检查每个传入的请求,要创build一个新的工作,并获得ID。 正如你从上面的代码可以看到,当我创build工作,我将添加作业ID作业。 所以现在我想检查传入的ID与队列中的现有作业的job_id s和更新现有的作业与新PARAMMS如果find一个匹配的ID。 所以我的工作队列将有唯一的job_id每次:)。 可能吗 ? ,我search了很多,但没有find帮助,我检查了kue json API 。 但它只能创build并获取检索作业,不能更新现有的logging。 提前致谢 。

Node.js / Express和并行队列

我们正在构build一个基于Node.js服务器和Express的基础架构。 在服务器中,发生的情况如下: 服务器接受来自客户端的传入HTTP请求。 服务器生成两个文件(这个操作可以是“相对较长”,也就是说0.1秒左右) 服务器将生成的文件(每个〜20-200 KB)上传到外部CDN 服务器响应客户端,这包括CDN上文件的URI 目前,服务器为每个请求按顺序执行此操作,而且这种方式运行良好(Node / Express可以自动处理并发请求)。 然而,随着我们计划增长,并发请求的数量可能会增长,我们相信对我们来说,实现一个处理请求的队列会更好。 否则,我们可能冒险有太多的任务在同一时间运行和太多的打开连接到CDN。 快速响应客户并不是一件相关的事情。 我在想的是在Node服务器中有一个单独的部分,它包含一些 “工作人员”(2-3,但我们将做testing以确定同时操作的正确数量)。 所以,新stream程看起来像这样: 在接受来自客户端的请求之后,服务器将一个操作添加到队列中。 有2-3(待testing)工作人员将队列排除在外并执行所有操作(生成文件并将其上载到CDN)。 当工作人员处理了这个操作(不pipe是否在队列中停留时间较长),它通知Node服务器(callback),并且服务器响应客户端(它一直在等待)。 你怎么看待这个方法? 你相信这是正确的吗? 最重要的是,这可以在Node / Express中实现吗? 感谢您的时间