2014-11-06 4 views
1

Я пытаюсь настроить вечный монитор.Где место вечно-контрольного кода?

Я добавил это в мой app.js:

var forever = require('forever-monitor'); 

var child = new(forever.Monitor)('app.js', { 
    max: 3, 
    silent: true, 
    options: [] 
}); 

child.on('exit', function() { 
    console.log('app.js has exited after 3 restarts'); 
}); 

child.start(); 

Однако, когда я начинаю мое приложение из командной строки, она регистрирует «app.js завершился после 3-х стартов», но он все еще работает. В каком файле должен быть размещен этот код? Я что-то пропустил для использования навсегда монитора?

ответ

5

Вот как вечно-монитор работает

app_fm.js

var forever = require('forever-monitor'); 

var child = new(forever.Monitor)('app.js', { 
    max: 3, 
    silent: true, 
    options: [] 
}); 

child.on('exit', function() { 
    console.log('app.js has exited after 3 restarts'); 
}); 

child.start(); 


app.js

// put in all your great nodejs app code 
console.log('node app is now running'); 


Теперь из командной строки запустить приложение, набрав
узел app_fm

+0

, если я хочу, что сценарий начинает сам «навсегда» просто увеличить количество макс 999999 или есть флаг, чтобы отметить это как навсегда? – sanyooh

+3

Как правило, не рекомендуется навсегда остановить перезапуск приложения. В большинстве случаев ваше приложение выходит из строя, это связано с ошибкой в ​​коде, и если вы перезагружаетесь, он снова сработает. Повторение этого 9999999 раз будет просто разочаровывающим. Я использую forever-monitor для разработки, то есть для перезапуска приложения каждый раз, когда база кода изменяется, а не для производства. Если вы хотите получить решение о перезапуске вашего приложения на производстве, вы должны использовать выскочку. Вот учебник, который я написал, чтобы сделать это: http://handyjs.org/article/the-kick-ass-guide-to-deploying-nodejs-web-apps-in-production – takinola

0

Честно говоря, я просто использую forever и не оба с forever-monitor (хотя я знаю, что об этом говорят навсегда документы!). Я создаю файл под названием start.js и запускаю свое приложение с node start.js.

'use strict'; 
var forever = require('forever'); 
var child = new (forever.Monitor)('app.js', { 
    //options : options 
}); 

//These events not required, but I like to hear about it. 
child.on("exit", function() { 
    console.log('app.js has exited!'); 
}); 
child.on("restart", function() { 
    console.log('app.js has restarted.'); 
}); 
child.on('watch:restart', function(info) { 
    console.error('Restarting script because ' + info.file + ' changed'); 
}); 

//These lines actually kicks things off 
child.start(); 
forever.startServer(child); 

//You can catch other signals too 
process.on('SIGINT', function() { 
    console.log("\nGracefully shutting down \'node forever\' from SIGINT (Ctrl-C)"); 
    // some other closing procedures go here 
    process.exit(); 
}); 

process.on('exit', function() { 
    console.log('About to exit \'node forever\' process.'); 
}); 

//Sometimes it helps... 
process.on('uncaughtException', function(err) { 
    console.log('Caught exception in \'node forever\': ' + err); 
}); 
Смежные вопросы