是否可以暂停和恢复节点工作者?对于worker,我的意思是使用cluster module创建的流程。 一个代码示例将非常感激。
答案 0 :(得分:0)
节点集群模块只包装由child_process.fork
模块创建的一组进程。主要区别在于,如果查看cluster
模块的源代码,则在创建分支时,所有创建的分支都使用modulePath
参数的当前进程路径。我的观点
是cluster
模块实际上是一个为您处理工作负载的抽象。所以你可能想看一下child_process
模块。
话虽如此,我不知道暂停和恢复节点进程的方法,但您可以在process.on('message')
和process.send()
的进程之间建立通信。
例如,2个文件master.js
和worker.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
事件