node.js - 当请求超时时,如何停止 Express 中的进程?

标签 node.js express error-handling timeout

请求超时时如何停止 Express 中的进程?

安装“连接超时”
从“connect-timeout”导入超时;

// halt_on_timeout.js

module.exports = function haltOnTimedout(req, res, next) {
  if (!req.timedout) next();
};

昂贵的过程需要超过 30 秒 路线超时,但 expense_long_operation 永远不会停止运行..

route.post(
  'upload_alot_of_content/'
   timeout('30s'),
   haltOnTimedout,
   async (req, res) => {
      const result = await expensive_long_operation();
      if (req.timedout) {
        next('error!')
      }
      res({....})
   })

最佳答案

在 Node.js 中无法任意停止异步进程,但是您可以实现几个选项来实现您想要的目的。

  1. 您可以在 fork 的 Nodejs 进程中运行昂贵的_long_操作,然后在超时时终止该进程。
  2. 您可以将昂贵的_long_操作编写为异步 C++ 模块,并构建一种允许您中断操作的机制。

关于node.js - 当请求超时时,如何停止 Express 中的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57681046/

相关文章:

Python (nltk) - UnicodeDecodeError : 'ascii' codec can't decode byte

javascript - 为什么我会收到此 JQuery 错误 : $ (".left_hand_icon"). 按钮不是函数

javascript - 如何在node js中使用多线程修改同一个数组?

javascript - 如何使用 javascript 或 Lodash 从多个对象创建单个对象

reactjs - Babel 编译 CSS 文件

vb.net - vb.net 应用程序出现 OutOfMemoryException

node.js - 如何在我的环境声明文件中声明全局 NodeJS 变量?

node.js - npm install gifsicle behind corporate proxy 失败或卡在 Windows 系统

node.js - 如何在同一项目中将 Typescript 与 Angular CLI 和 Express/Node 一起使用?

angularjs - 对于多部分表单数据,request.body 始终为空