2

フロントエンドは、ルートに対して長いポーリング Ajax 呼び出しを実行しています。コントローラーは、非同期の子プロセスが処理を処理できるようにします。これには 2 分以上かかります。

ただし、コントローラーは 2 分のマークで 2 回目に呼び出されます。Sails では、req 処理で 2 分間のタイムアウトが発生する可能性があると思われます。これは一般的に妥当ですが、この特定のケースではそうではありません。

Chrome が XHR を 1 つだけ送信していることを確認しましたが、コントローラーが 2 回目に呼び出される前に応答がありません。

コントローラーが 2 回目に呼び出されると、Express ミドルウェアも呼び出されます。

コントローラーは基本的に以下です。子が応答を送信すると、asyncChildProcess の cb が呼び出されます。

module.exports = {
  run: function (req, res) {
    asyncChildProcess.exec('the command', 'data to', function (errObj, command, dataFrom) {
      if (errObj) {
        res.json(errObj);
      } else {
        res.send('ran successfully');
      }
    }
  }
};

コントローラーが req から呼び出され、子プロセスが処理を開始し、cb が呼び出されず、別の req が受信されない間に 2 秒が経過し、2 分の時点でコントローラーが 2 回呼び出されます。

タイムアウトを制御するにはどうすればよいですか? また、長時間実行される要求を処理するにはどうすればよいですか?

4

0 に答える 0