Как запустить фоновый процесс с помощью Express и Node без истечения времени ожидания? - PullRequest
0 голосов
/ 01 мая 2019

У меня есть экспресс-маршрут, по которому я хочу начать работу, а затем вернуть 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 при подключении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...