如何暂停和恢复节点工作者?

时间:2015-05-10 16:19:16

标签: javascript node.js

是否可以暂停和恢复节点工作者?对于worker,我的意思是使用cluster module创建的流程。 一个代码示例将非常感激。

1 个答案:

答案 0 :(得分:0)

节点集群模块只包装由child_process.fork模块创建的一组进程。主要区别在于,如果查看cluster模块的源代码,则在创建分支时,所有创建的分支都使用modulePath参数的当前进程路径。我的观点 是cluster模块实际上是一个为您处理工作负载的抽象。所以你可能想看一下child_process模块。

话虽如此,我不知道暂停和恢复节点进程的方法,但您可以在process.on('message')process.send()的进程之间建立通信。

例如,2个文件master.jsworker.js

worker.js

process.on('message', function(message) {
   process.send('Hey you sent ' + m);
});

master.js

var fork = require('child_process').fork;

var worker = fork('./worker.js');

child.on('message', function(m) {
   console.log('Recieved: ' + m);
});

// we could send as many messages as we want, the child process will 
// will idle between messages
child.send('Message 1');

在这个示例中,我们可以根据需要来回发送任意数量的消息,子进程将不会退出,因为我们已向process添加了事件侦听器,但它只会监听message事件