2

前端正在对路由进行长轮询 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 分钟标记处控制器被第二次调用。

如何控制超时和/或如何处理长时间运行的请求?

4

0 回答 0