Tag: worker

如何产生与PM2的工人

通过使用PM2,我已经失去了运行本地集群的能力,我曾经用它来产生工人,比如: if (cluster.isMaster) { cluster.schedulingPolicy = cluster.SCHED_NONE; for (var i = 1; i < CPUs; i++) { cluster.fork(); } Object.keys(cluster.workers).forEach(function(id) { cluster.workers[id].on('message', logpi); }); cluster.on('death', function(worker, code, signal) { console.error('Death:', worker.pid); cluster.fork(); }); cluster.on('exit', function(worker, code, signal) { console.error('Exit:', worker.pid); cluster.fork(); }); require('./worker.js'); } else { require('./server.js'); } 我将如何在集群模式下启动PM2时产生工人$ pm2 start app.js -i 0 ?

单独的Web和工作进程,是否应为每个进程build立一个新的连接?

我目前正在尝试构build一个具有Web和工作进程的NodeJS Web应用程序,并使用AMQP在它们之间进行通信。 使用我当前的设置,启动应用程序包括启动Web进程的脚本( server.js )和工作进程的另一个脚本( worker.js )。 每个文件都include第三个文件, amqp.js ,它使用一个启动函数,包括创build一个连接,然后创build一个通道,然后声明队列。 然而,在试图debugging另外一个问题时,我碰到了这篇文章 ,它显示了一个不同的结构:首先创build一个连接,然后启动两个进程,每个进程创build一个通往该连接的通道并断言两个队列。 我应该为每个工作人员build立一个新的连接吗?我可以在networking和工作人员分开的环境中实现这个连接吗?

发送缓冲区到Node.jssubprocess

在浏览器中,发送缓冲区而不是常规数组会更快。 这是通过以下方式完成的: // create data that can be transfered var myData = [1,3,5,78,1,2,45,6,5,12]; var buffer = new Float64Array(myData.slice()); var worker = new Worker("some_worker.js"); // transfer the buffer worker.postMessage({buffer: buffer}, [buffer]); 有没有一种方法可以在Node.js的subprocess上使用相同的技巧? 这是否会显着加速沟通? 例如,我将如何修改以下脚本来加快速度: var cp = require('child_process'); // create data that can be transfered var myData = [1,3,5,78,1,2,45,6,5,12]; var child = cp.fork('some_worker.js'); // transfer the […]

节点child_process vs Heroku worker

试图让我的头脑围绕着Node和Heroku上的工作者线程。 从Node.js中调用exec会发生什么? 相信这是在单独的线程上运行,并且不阻止主事件循环是否正确? require('child_process').exec(cmd, function (err, stdout, stderr) { // … do stuff }); 如果在Heroku上,把这个移动到一个单独的工作者有什么好处吗? 例如 如果计算密集,child_process会减慢主应用程序的速度吗? 工人dynos得到自己的内存限制? 一个未被捕获的错误(天堂禁止)不会崩溃的主要应用程序,如果在一个工人?

如何使用Kue处理预定的重复作业?

在我的Web应用程序中,用户可以创build每月在特定date生成和发送的循环发票。 例如,发票可能需要在每个月的五号发出。 我正在使用Kue来处理所有的背景作业,所以我想在这种情况下也这样做。 我目前的解决scheme是使用setInterval()每小时创build一个processRecurringInvoices作业。 然后,该作业将从数据库中查找所有定期发票,并为每个定期发票创build一个单独的generateInvoice作业。 然后, generateInvoice作业将实际生成发票,如果需要的话,也将创build一个sendInvoiceToEmail作业,通过电子邮件发票。 目前这个解决scheme对我来说看起来不错,因为它有一个很好的问题分离,但是,我有以下问题: 我不确定是否应该在主processRecurringInvoices作业中调用done()之前等待所有“子”作业完成? 我应该在哪里处理错误? 我是否应该将它们传递给processRecurringInvoices作业,还是应该为每个作业单独处理? 如何确保如果处理需要超长时间(超过一个小时),并且processRecurringInvoices或任何子作业仍在运行, processRecurringInvoices作业不会再次创build? 有点像独特的工作,还是相互排斥?

一个heroku应用上的多个工作者/networking进程

有没有一些方法来configuration多个工作和/或Web进程在单个Heroku应用程序容器中运行? 或者这是否必须分解成多个Heroku应用程序? 例如: worker: node capture.js worker: node process.js worker: node purge.js web: node api.js web: node web.js