我需要增加Koa服务器中2分钟默认请求超时的帮助。 我的任务很长时间,需要几分钟。完成后,我将发送回一个响应。问题是2分钟的超时(默认为节点js)后,连接会自动关闭。
我尝试了Google的所有功能。 尝试使用所有类型的第三方npm模块。
尝试ctx.request.socket.setTimeout(0)
我没有主意,需要帮助。
我正在使用无限超时的邮递员执行对服务器的请求。
更新-这是一段代码,其中包含我正在尝试做的事情:
const Koa = require('koa')
const app = new Koa()
const PORT = 7555
const server = app.listen(PORT)
app.use(async (ctx, next) => {
ctx.req.setTimeout(0);
await next();
});
app.use(async (ctx, next) => {
const wait = async () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, 1000 * 60 * 5)
})
}
await wait()
console.log("settimeout finished", new Date())
ctx.response.body = { success: "true", date: new Date() }
})
答案 0 :(得分:1)
您可以像这样在应用程序的早期添加中间件:
app.use(async (ctx, next) => {
ctx.req.setTimeout(0);
await next();
});
似乎koa保留了120s timeout default from http_server.js
因此,您可以尝试破解它,但是这种中间件应该可以解决问题。
您也可以尝试以下方法:
const server = app.listen(PORT); // This returns the https_server instance
server.setTimeout(600000)
您可以查看相关信息here
答案 1 :(得分:1)
我测试了这一个……效果很好:
public static Collection<List<Integer>> splitListBySize(List<Integer> intList, int size) {
if (!intList.isEmpty() && size > 0) {
final AtomicInteger counter = new AtomicInteger(0);
return intList.stream().collect(Collectors.groupingBy(it -> counter.getAndIncrement() / size)).values();
}
return null;
}
请确保-如果您的生产系统中涉及const Koa = require('koa')
const app = new Koa()
const PORT = 7555
const server = app.listen(PORT);
server.setTimeout(0); // <-- this should do the trick ...
app.use(async (ctx, next) => {
console.log("request started", new Date())
const wait = async () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, 1000 * 60 * 5)
})
}
await wait()
console.log("settimeout finished", new Date())
ctx.response.body = { success: "true", date: new Date() }
})
或apache
来修改其配置(此处将其增加到500秒)。
对于NGINX(代理)
nginx
在vim /etc/nginx/nginx.conf
部分
(请参阅http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout)
http{..}
对于Apache
http {
#...
proxy_read_timeout 500s;
proxy_send_timeout 500s;
#...
}
搜索超时
vim /etc/apache2/apache2.conf: