2

NodeJS プロジェクトで実行時間の長いタスクがいくつかあり、プロジェクト上に RESTful インターフェイスを構築しています。

実行時間の長いタスクの実行中にステータスの更新を提供して、REST インターフェースに引き続きアクセスできることをテストしたいと考えています。

マルチスレッド環境では、HTTP コントローラーが別のスレッドで実行されているため、1 つのスレッドを一定期間スリープさせるだけなので、これは簡単にテストできます。これは明らかにNodeJSでは不可能です(単一スレッドのため):)

タスクをスタブ化することはできますが、REST エンドポイントにアクセスしてステータスの更新を取得できるように、スレッドをブロックせずにスタブを一定期間「待機」させるにはどうすればよいでしょうか?

4

1 に答える 1

4

CPUバウンドの長時間実行タスクについて言及していると仮定します。

これを行う最善の方法は、CPU バウンドのタスクをサブプロセスに送信することです。child_processパッケージを使用できます。

を使用child_processすると、新しいプロセスを生成し、パイプを介してそれらと通信できます。子プロセスに stdin のデータを期待させ、結果を stdout に書き込みます。

ノード プロセスは、ネットワーク リクエストの処理を継続しながら、別のプロセスですべての CPU バウンド タスクを生成できます。

worker-farmパッケージもチェックしてください。

于 2013-04-14T01:57:49.153 に答える