Skip to content

node-modules/cfork

Repository files navigation

cfork

NPM versionNode.js CITest coveragenpm downloadNode.js Version

cluster fork and restart easy way.

  • Easy fork with worker file path
  • Handle worker restart, even it was exit unexpected.
  • Auto error log process uncaughtException event

Install

npm install cfork

Usage

ESM and TypeScript

importutilfrom'node:util';import{cfork}from'cfork';constclusterWorker=cfork({exec: '/your/app/worker.js',// slaves: ['/your/app/slave.js'],// count: require('os').cpus().length,}).on('fork',worker=>{console.warn('[%s] [worker:%d] new worker start',Date(),worker.process.pid);}).on('disconnect',worker=>{console.warn('[%s] [master:%s] wroker:%s disconnect, exitedAfterDisconnect: %s, state: %s.',Date(),process.pid,worker.process.pid,worker.exitedAfterDisconnect,worker.state);}).on('exit',(worker,code,signal)=>{constexitCode=worker.process.exitCode;consterr=newError(util.format('worker %s died (code: %s, signal: %s, exitedAfterDisconnect: %s, state: %s)',worker.process.pid,exitCode,signal,worker.exitedAfterDisconnect,worker.state));err.name='WorkerDiedError';console.error('[%s] [master:%s] wroker exit: %s',Date(),process.pid,err.stack);})// if you do not listen to this event// cfork will output this message to stderr.on('unexpectedExit',(worker,code,signal)=>{// logger what you want})// emit when reach refork times limit.on('reachReforkLimit',()=>{// do what you want});// if you do not listen to this event// cfork will listen it and output the error message to stderrprocess.on('uncaughtException',err=>{// do what you want});// if you want to dynamically disable refork, you can call the setDisableRefork, priority over the refork parametercfork.setDisableRefork(clusterWorker,true);

CommonJS

const{ cfork }=require('cfork');

Options

  • exec : exec file path
  • slaves : slave process config
  • args : exec arguments
  • count : fork worker nums, default is os.cpus().length
  • refork : refork when worker disconnect or unexpected exit, default is true
  • limit: limit refork times within the duration, default is 60
  • duration: default is 60000, one minute (so, the refork times < limit / duration)
  • autoCoverage: auto fork with istanbul when running_under_istanbul env set, default is false
  • env: attach some environment variable key-value pairs to the worker / slave process, default to an empty object.
  • windowsHide: Hide the forked processes console window that would normally be created on Windows systems, default to false.
  • serialization: Specify the kind of serialization used for sending messages between processes. Possible values are 'json' and 'advanced'. See Advanced serialization for child_process for more details. Default: false.

License

MIT

Contributors

Contributors

Made with contributors-img.

About

cluster fork and restart easy way

Resources

License

Stars

Watchers

Forks

Contributors 14