У меня есть экспресс-маршрут, по которому я хочу начать работу, а затем вернуть 202. Вот так ...
const HANDLE_REQUEST = (req, res, next)=>{
LOGGER.log("verbose", "Calling the GET");
setTimeout(()=>{
START_JOB(1, req.query.server, req.query.start, req.query.end);
});
res.status(202).send("Job Started");
next();
};
router.get("/", HANDLE_REQUEST);
Это работает, и 202 отправляется сразу.
Проблема в том, что время ожидания истекло через ~ 5 минут ...
2019-05-01T09:47:29.074-04:00 [APP/PROC/WEB/0] [ERR] Error: read ECONNRESET
2019-05-01T09:47:29.074-04:00 [APP/PROC/WEB/0] [ERR] at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
Я попытался установить тайм-аут сокета и сохранить его следующим образом ...
this.server = spdy.createServer(spdyOpts, this.express);
this.server.on("connection", (socket)=>{
socket.setTimeout(this.timeout * 60 * 1000);
socket.setKeepAlive(true, this.timeout * 60 * 1000);
socket.once("timeout", function(){
LOGGER.log("error",`Timed out`);
process.nextTick(socket.destroy);
});
});
this.server.listen(this.port, (err)=>{
if (err){
LOGGER.log("error", err);
return process.exit(1);
}
return LOGGER.log("info", `Server is listening on ${this.port}`);
});
Но это, похоже, не помогает. Есть ли способ, которым я могу запустить фоновый процесс (рабочий?) В Express при подключении?