node.js - Koa - 在传入请求上设置超时
问题描述
setTimeout
我正在尝试使用自定义中间件为传入请求设置超时,但没有引发错误,似乎一旦过期就不会调用中间件。
这是我正在尝试的代码:
app.use(async (ctx, next) => {
setTimeout(() => {
if (!ctx.headersSent) {
ctx.throw(408, `processing time toke longer than ${config.PROCESSING_TIMEOUT}, request was timedout`);
}
}, config.PROCESSING_TIMEOUT);
await next();
});
解决方案
Koa(或者更确切地说是节点的 http 服务器)有一个内置的方法来控制请求的超时。
可以通过在 ms 中设置服务器的超时来设置全局超时
server.timeout = config.PROCESSING_TIMEOUT;
可以在 Koa 的特定请求中指定超时,如下所示
ctx.request.socket.setTimeout(config.PROCESSING_TIMEOUT);
推荐阅读
- python - 显示字符串的中间元素
- elasticsearch - Elasticsearch 更新文档而不检索它们
- c# - RecognizeAsync() 不起作用,但 Recognize() 起作用,为什么?
- java - Java中用于回调函数的泛型类中可变数量的参数
- symfony - PHPStan 使用 composer 存在 Symfony 版本差异
- pyspark - pyspark:评估数据框中所有元素的总和
- react-native - RN-fetch-blob 不下载文件总是失败
- html - 如何让我的“徽标”图像显示在标题中?
- sql - 如何调试以文件名为参数的 pro*cobol 程序
- pagination - 每页的默认行数覆盖了 Vuetify 1.5.2 中 v-data-iterator 中的 items-per-page 属性