Подтвердить что ты не робот

Использование навсегда с Node.js

У меня есть несколько, возможно, тривиальных вопросов с использованием навсегда с Node.js. Из того, что я прочитал, навсегда можно использовать программно, и он поддерживает список со всеми сценариями, которые используются навсегда. Когда этот процесс умирает, он автоматически генерирует новый, пока он не будет остановлен.

Однако, мой вопрос: как это делается навсегда? Добавляет ли эти скрипты к запуску при загрузке?

4b9b3361

Ответ 1

Вы можете использовать forever programatically следующим образом:

Использование экземпляра Forever внутри node.js script:

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

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

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

  child.start();

Вы должны потратить минуту и ​​прочитать варианты, доступные в отличной документации для Forever в README.md

У вас есть несколько событий, которые можно прослушать также на Forever:

  • error [err]: При возникновении ошибки
  • start [process, fvrFile, data]: Поднять, когда цель script будет запущена.
  • stop [process]: Поднимается, когда пользователь script останавливается пользователем
  • сохранить [путь, данные]: поднят, когда целевой монитор сохраняет информацию pid на диск.
  • restart [forever]: Поднимается каждый раз, когда цель script перезапускается.
  • exit [forever]: Поднимается, когда цель script на самом деле выходит (permenantly).
  • stdout [data]: Поднят, когда данные получены от дочернего процесса 'stdout
  • stderr [data]: Поднят, когда данные получены от дочернего процесса 'stderr

Он делает это, присоединяя прослушиватели событий к script, которые вы пытаетесь запустить, и обрабатывая их изящно.

Код довольно хорошо документирован, если вы хотите взглянуть на то, как он это делает.

Вы также должны прочитать этот отличный учебник о том, как поддерживать непрерывный процесс.

Что касается второго вопроса: Нет, он не добавляет его для запуска при загрузке. Для этого вам нужно добавить его как upstart job или использовать что-то вроде Monit для контролировать и запускать его. Для этого вы должны взглянуть на Развертывание node.js с помощью Upstart и Monit. Это отличный учебник.

Ответ 2

Это старый пост, но я наткнулся на это на Google - его немного устарели, так как навсегда разветвленная версия командной строки из программной версии. Вам нужно использовать forever-monitor вместо forever, Код примера теперь должен быть:

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

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

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

  child.start();

Я попытался предложить отредактировать исходный ответ, но полномочия, которые его отвергли. Понял, что я мог избавить некоторых других от времени, когда мне потребовалось выяснить, почему код примера не работает: -)