请求超时时如何停止 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 中无法任意停止异步进程,但是您可以实现几个选项来实现您想要的目的。
- 您可以在 fork 的 Nodejs 进程中运行昂贵的_long_操作,然后在超时时终止该进程。
- 您可以将昂贵的_long_操作编写为异步 C++ 模块,并构建一种允许您中断操作的机制。
关于node.js - 当请求超时时,如何停止 Express 中的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57681046/