http://nodejs.org/api/child_process.html - это правильный API для создания длительных процессов, у вас будет полный контроль над дочерними процессами (доступ к stdin/out/err, отправка сигналов и т. Д.).
Однако этот подход требует, чтобы ваш процесс узла был родительским для этих детей.
. Если вы хотите, чтобы ребенок пережил родителя, взгляните на options.detached
во время создания ребенка (и следуйте child.unref()
).
Обратите внимание, однако, что Node.js подходит очень хорошо, чтобы избежать такой архитектуры. Обычно node.js выполняет весь фоновый материал в основном потоке. Я пишу приложения с большим количеством трафика (например, тысячи запросов в секунду), при этом DB, Redis и RabbitMQ получают доступ ко всем из основного потока и без каких-либо дочерних процессов - и он работал нормально, как и должно быть, благодаря событию Node IO.
Я обычно использую child_process api только для запуска отдельных исполняемых файлов (например, ffmpeg для перекодирования некоторого видеофайла), кроме таких сценариев отдельные процессы, вероятно, не то, что вы хотите.
Существует также кластер api, который позволяет одному хозяину обрабатывать многочисленные рабочие процессы, хотя я думаю, что это не то, что вы ищете.
Отличный ответ @Nopik. Но моя главная забота здесь о дочерних процессах заключается в том, что если родительский процесс умирает, он будет уничтожать ребенка с ним, я хочу убедиться, что этого не произойдет, возможно ли это? Кроме того, вы можете предоставить ссылку для узла api api и несколько вариантов использования. Оценил! – securecurve
https://nodejs.org/api/cluster.html – Nopik
Я также отредактировал свой ответ, чтобы предоставить информацию о ребенке, переживающем родителя. – Nopik