2012-08-09 17 views
7

私はnode.jsと協力しています。これらの複雑な計算を行うために./calculateのような新しいプロセスを開始するようなリクエストがあった場合、そのプロセスを続行しますそれを呼び出したスクリプトは終了しました。 可能ですか?nodejsで新しいプロセスを開始

ありがとうございます。

答えて

3

あなたはネイティブに提供子プロセス設備使用することができます。 http://nodejs.org/api/child_process.html

をし、親プロセスが死んだ場合でも、生きている子プロセスを維持するために、UNIX「nohupは」コマンドを使用します。

+1

パフォーマンスについて話し合うのは良い判断ですか?ありがとうございました – Mario

+0

子プロセスの作成結果が、作成したのと同じ接続で返されるようにしていますか? – Roman

+1

子どもの労働者のプールを作成し、データベース内の待ち行列(例えば、Redisのようなものを使用して)でそれらと通信することができます。これは非常にスケーラブルで弾力性があります。 便利なリンクはほとんどありません。 http://stackoverflow.com/questions/5630208/nodejs-child-processes-exec-can-not-return-nohup-command http://stackoverflow.com/questions/ 4762016/node-js-workers-background-processes – Roman

3

これにはさまざまなアプローチがあります。

https://github.com/pgriess/node-webworkerを使用できます。

またははるかに良いhttp://nodejs.org/docs/latest/api/cluster.html#cluster_cluster

これらのソリューションは、Nodeでサブプロセスを実行する場合は、単純に新しいNodeプロセスを生成し、出力(http://nodejs.org/api/all.html#all_child_process_spawn_command_args_options)ではなくノード-webworkerはその解決策を包むラッパーであり、はるかにクリーンです。

+0

しかし、私は全く待ってはいません。私はサブプロセスを呼びたいと思っています。つまり、メインスクリプトが死んだり、httpサーバが終了したりすると、サブプロセスを続行してもらいたいということです。ありがとうございました。 – Mario

1

あなたの最後のコメントの後、私はあなたがしたいことをよりよく理解しています。

子プロセスではないプロセスを生成したいとします。これを行うための最善の方法は、それらを実行するために何らかのdemonizierを使用することです。

は永遠を見てください:
https://github.com/nodejitsu/forever
https://github.com/nodejitsu/forever-monitor

これはあなたのための完璧なツールである可能性があります。私はそれを使用したことがないprogramatically、ちょうどcli。しかし、これは私が調べるものです。

+0

あまりにもありがとうが、私はcomandのnohupは私のために良いことを見つける;) – Mario

+1

時にはシンプルさは十分です:D – 3on