フロントエンドは、ルートに対して長いポーリング 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 回呼び出されます。
タイムアウトを制御するにはどうすればよいですか? また、長時間実行される要求を処理するにはどうすればよいですか?