2015-12-05 24 views
5

में एकाधिक नोड स्क्रिप्ट चलाएं मेरे पास दो सर्वर स्क्रिप्ट हैं (दोनों सॉकेट.ओ पर निर्भर हैं; विभिन्न बंदरगाहों पर चल रहे हैं)।गुलप: समानांतर

मैं दोनों को गल्प के माध्यम से समानांतर में शुरू करना चाहता हूं। लेकिन इसके अलावा मैं उनमें से एक को रोकने की संभावना चाहूंगा। और शायद प्रत्येक स्क्रिप्ट के कंसोल आउटपुट तक पहुंच सकते हैं।

क्या इसके लिए कोई मौजूदा समाधान है? या आप गल्प की तुलना में किसी और चीज का उपयोग करने की भी सिफारिश करेंगे?

उत्तर

3

मैं एक समाधान है, जिसमें मैं इसके अलावा एक MongoDB सर्वर प्रारंभ पाया:

var child_process = require('child_process'); 
var nodemon = require('gulp-nodemon'); 

var processes = {server1: null, server2: null, mongo: null}; 

gulp.task('start:server', function (cb) { 
    // The magic happens here ... 
    processes.server1 = nodemon({ 
     script: "server1.js", 
     ext: "js" 
    }); 

    // ... and here 
    processes.server2 = nodemon({ 
     script: "server2.js", 
     ext: "js" 
    }); 

    cb(); // For parallel execution accept a callback. 
      // For further info see "Async task support" section here: 
      // https://github.com/gulpjs/gulp/blob/master/docs/API.md 
}); 

gulp.task('start:mongo', function (cb) { 
    processes.mongo = child_process.exec('mongod', function (err, stdout, stderr) {}); 

    cb(); 
}); 

process.on('exit', function() { 
    // In case the gulp process is closed (e.g. by pressing [CTRL + C]) stop both processes 
    processes.server1.kill(); 
    processes.server2.kill(); 
    processes.mongo.kill(); 
}); 

gulp.task('run', ['start:mongo', 'start:server']); 
gulp.task('default', ['run']); 
+0

मैं सुझावों के लिए खुला हूं और बेहतर समाधान के लिए चेकमार्क देने के इच्छुक हूं। – tmuecksch

0

nodemon/foreverjs नहीं जटिल मामलों के लिए एक अच्छा समाधान है, लेकिन वे के रूप में स्केलेबल pm2 है के रूप में नहीं कर रहे हैं। इसलिए, यदि आप एक स्केलेबल और विश्वसनीय समाधान चाहते हैं तो मैं pm2 का उपयोग करने की सलाह दूंगा। इसके अलावा, यह उल्लेखनीय है कि foreverjs/nodemon के विपरीत शुरू होने के बाद pm2 deemonizes। यह आपके लिए एक बग या एक विशेषता हो सकता है और आमतौर पर आपकी आवश्यकताओं पर निर्भर करता है।

pm2 start script1.js 
pm2 start script2.js 
pm2 status // show status of running processes 
pm2 logs // tail -f logs from running processes