nounou

2018-11-10 admin

nounou是什么

什么是nounou,Node.js process daemon

nounou使用教程帮助文档

nounou(保姆)

Node.js process deamon.

非Cluster模式的进程守护

cluster的fork形式仅能对单一进程使用。nounou适合其他情况,比如守护定时任务。

注意:nounou仅负责重启,不负责调度,不负责负载均衡。

Usage

编程式使用:

const nounou = require('nounou');
const timerPath = '/path/to/timer.js';

// 任务进程
nounou(timerPath).on('fork', (worker) => {
  console.log('[%s] [%d] new task worker start', Date(), worker.pid);
}).on('disconnect', (worker) => {
  console.error('[%s] [%s] task worker: %s disconnect.',
    Date(), process.pid, worker.pid);
}).on('unexpectedExit', (worker, code, signal) => {
  var err = new Error(util.format('task worker %s died (code: %s, signal: %s)',
    worker.pid, code, signal));
  err.name = 'WorkerDiedError';
  console.error('[%s] [%s] worker exit: %s', Date(), process.pid, err.stack);
}).on('reachReforkLimit', () => {
  console.error('Too much refork!!!!!!');
});

命令式使用:

$ nounou /path/to/timer.js
# multi workers
$ nounou /path/to/timer.js 2

正常退出

如果子进程在运行一段时间后需要退出,之后无需重启。需要通过如下方式进行退出:

process.send({type: 'suicide'});
process.exit(0);

该行为会触发expectedExit事件,标志退出符合预期,无需重启。

Events

  • exit。退出事件。
  • expectedExit。预期的退出事件。
  • unexpectedExit。非预期的退出事件。
  • disconnect。IPC通道断开的事件。
  • reachReforkLimit。单位时间内重启次数达到上限。该事件后,进程不会再次重启。

注意事项

通常kill掉nounou主进程,它守护的子进程并不会随之而退出。如需子进程跟随父进程退出,需要以下代码:

// exiting with parent process
process.on('disconnect', () => {
  console.log('exiting with parent process');
  process.exit(0);
});

License

The MIT license

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-45045.html

文章标题:nounou

回到顶部