前端正在对路由进行长轮询 Ajax 调用。控制器让异步子进程处理处理。这将需要 2 分钟以上。
然而,控制器在 2 分钟标记处被第二次调用。我怀疑 Sails 在请求处理时可能会有 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');
}
}
}
};
控制器从请求中调用,子进程开始处理,在没有调用 cb 也没有接收到另一个请求期间经过了 2 分钟,在 2 分钟标记处控制器被第二次调用。
如何控制超时和/或如何处理长时间运行的请求?