Где место вечно-мониторного кода?

Я пытаюсь настроить вечный монитор.

Я добавил это в свой 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 запусков», но оно все еще работает. В какой файл следует поместить этот код? Я что-то упускаю из-за использования навсегда-монитора?


person sanyooh    schedule 06.11.2014    source источник


Ответы (2)


Вот как работает постоянный монитор

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');


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

person takinola    schedule 06.11.2014
comment
если я хочу, чтобы скрипт запускался «навсегда», должен ли я просто увеличить максимальное число до 999999 или есть флаг, чтобы пометить это как навсегда? - person sanyooh; 07.11.2014
comment
Обычно не рекомендуется иметь постоянный монитор, перезапускающий ваше приложение на неопределенный срок. В большинстве случаев ваше приложение дает сбой из-за ошибки в коде, и если вы перезапустите, оно просто снова сработает. Повторять это 9999999 раз будет просто неприятно. Я использую Forever-Monitor для разработки, то есть для перезапуска приложения каждый раз, когда изменяется кодовая база, а не для производства. Если вам нужно решение для перезапуска вашего приложения в рабочей среде, вам следует использовать upstart. Вот учебник, который я написал для этого handyjs.org/article/ - person takinola; 07.11.2014

Честно говоря, я просто использую 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 );
} );
person clay    schedule 06.11.2014