前端正在对路径进行长时间轮询Ajax调用。控制器允许异步子进程处理该处理。这将花费超过2分钟。
然而,控制器在2分钟时被第二次调用。我怀疑Sails可能在req处理上有2分钟超时。这一般是合理的,但在这种特殊情况下则不然。
我检查过Chrome只发送了1个XHR,在第二次调用控制器之前没有收到回复。
第二次调用控制器时也会调用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分钟时控制器被第二次调用。
如何控制超时和/或我如何处理长时间运行的req?