【问题标题】:Where place forever-monitor code?永远监控代码在哪里?
【发布时间】:2015-01-03 03:49:59
【问题描述】:

我正在尝试设置永久监视器。

我将此添加到我的 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 次启动后退出”,但它仍然运行。这段代码应该放在哪个文件中?我是否遗漏了有关使用永久监视器的内容?

【问题讨论】:

    标签: node.js forever


    【解决方案1】:

    老实说,我只使用 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 );
    } );
    

    【讨论】:

      【解决方案2】:

      forever-monitor 的工作原理如下

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


      现在从 CLI 中键入以下内容启动您的应用程序
      节点app_fm

      【讨论】:

      • 如果我希望脚本“永远”启动自己,我应该将最大数量增加到 999999 还是有一个标志将其标记为永远?
      • 让永远的监视器无限期地重启你的应用程序通常不是一个好主意。大多数情况下,您的应用程序崩溃,这将是由于代码中的错误,如果您重新启动,它会再次崩溃。重复这 9999999 次只会令人沮丧。我使用forever-monitor进行开发,即每次代码库更改时重新启动应用程序,而不是用于生产。如果您想要在生产中重新启动应用程序的解决方案,您应该使用 upstart。这是我写的一个教程handyjs.org/article/…
      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多