Как я могу перезапустить свое приложение, когда возникает исключение?
process.on('uncaughtException', function(err) {
// restart app here
});
Как я могу перезапустить свое приложение, когда возникает исключение?
process.on('uncaughtException', function(err) {
// restart app here
});
Вы можете запустить процесс как вилку другого процесса, так что вы можете разветкить его, если он умрет. Для этого вы использовали бы встроенный Cluster модуль:
var cluster = require('cluster');
if (cluster.isMaster) {
cluster.fork();
cluster.on('exit', function(worker, code, signal) {
cluster.fork();
});
}
if (cluster.isWorker) {
// put your code here
}
Этот код порождает один рабочий процесс, и если в рабочем процессе возникает ошибка, он будет закрыт, а выход будет повторять другой рабочий процесс.
У вас есть несколько вариантов.
Перезапустите приложение с помощью монитора, например nodemon/forever
process.on('uncaughtException', function (err) {
console.log(ERR); // Отправить уведомление об ошибке
process.exit(1);
});
запустите свое приложение, используя
nodemon./server.js
forever server.js start
Перезагрузитесь с помощью cluster
Этот метод включает кластер процесса, где мастер-процесс перезапускает любой дочерний процесс, если он убил
var cluster = require('cluster');
if (cluster.isMaster) {
var i = 0;
for (i; i< 4; i++){
cluster.fork();
}
//if the worker dies, restart it.
cluster.on('exit', function(worker){
console.log('Worker ' + worker.id + ' died..');
cluster.fork();
});
}
else{
var express = require('express');
var app = express();
.
.
app.use(app.router);
app.listen(8000);
process.on('uncaughtException', function(){
console.log(err);
//Send some notification about the error
process.exit(1);
}
}
checkout nodemon и forever. Я использую nodemon для разработки и навсегда для производства. Работает как шарм. просто запустите приложение с помощью nodemon app.js
.