Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var cluster = require('cluster');
- var fs = require('fs');
- var util = require('util');
- var _ = require('underscore')._;
- var optimist = require('optimist');
- var argv = optimist.argv;
- var script;
- var name = "";
- console.log = _.wrap(console.log, function(fn) {
- process.stdout.write(name + " ");
- fn.apply(this, _.rest(arguments));
- });
- function sub() {
- var vm = require('vm');
- name = util.format("[S-%s]", process.pid);
- process.on('message', function(m) {
- eval(m, script);
- });
- process.stdin.end();
- }
- function main() {
- name = util.format(" [M-%s]", process.pid);
- var code = fs.readFileSync(script, 'utf8');
- function _forkChild() {
- var child = cluster.fork();
- console.log("Starting [%s] (%s)", script, child.pid);
- child.send(code);
- }
- var forkChild = _.throttle(_forkChild, 1000);
- function childDeath(child) {
- console.log("Died [%s] (%s)", script, child.pid);
- forkChild();
- }
- cluster.on('death', childDeath);
- forkChild();
- };
- if(!module.parent) {
- if(argv._.length != 1) {
- throw new Error("One script must be passed");
- }
- script = argv._[0];
- if(cluster.isMaster) {
- main();
- } else {
- sub();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment