現在、NodeJs Web サービスを使用して、いくつかの casper.js スクリプトをオンデマンドで実行しています。casper.js はノードへの通信チャネルとして stdout を使用し、ノードは子プロセスとして casper を実行するため、他のノード サービスのように nssm を使用してノードを Windows サービスとして実行できないため、サーバーの起動時にスケジュールされたタスク。
これは機能しますが、このコードを製品化する必要があり、実際にはクラッシュに対する回復力を高める必要があります。つまり、失敗した場合はサービスを再起動する必要があります。
私が見ることができる限り、私のオプションは....
- Linuxボックスでノードサービスを実行すると、デーモンとして実行されているときにstdoutが機能するはずです
- どういうわけか、Windowsサービスがstdoutを「見る」ことができるようにします
- サービスを監視し、失敗した場合にサービスを再起動できる別のノード サーバー (nssm で実行) を作成します。
これまでのところ、追加のホスティング ホストがあるため、可能であればオプション 1 は避けたいと考えています。オプション 2 に役立つものは何も見つかりません。Windows サービスはそのようには機能しないようです。
そこで今日、クラッシュしたサービスがハートビートに応答しない場合に再起動できる監視サービスを作成しようとしました。問題は、別のインスタンス ノード内から完全に独立したノード サーバーを起動する方法がわかりません。子プロセスを使用する場合、それはまだサービスの子プロセスであり、stdout は作業を行いません。
では、ノードで独立したプロセスを作成することは可能ですか? この問題に対処するための他の提案はありますか?