504 Ошибка тайм-аута шлюза в Express.js при работе таймера - PullRequest
0 голосов
/ 29 января 2019

Я получаю ошибку «504 Gateway Timeout» в моем приложении Express.js, когда таймер JavaScript запускается каждые 20 секунд.

Это мой прослушиватель Express.js и таймер:

const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => res.send('ok.'))
var listener = app.listen(process.env.PORT, function() {
  console.log('Your app is listening on port ' + listener.address().port);
});

var items = [
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10
]

let forParallel = require('node-in-parallel');
var request = require('sync-request');

setInterval(function() {
  forParallel(items, function(listItem) {
        request("GET", "https://example.com/?i=" + listItem);
        console.log("Done.");
  }, function () {
  });
}, 20000);

Итак, как вы можете видеть: я использую параллельный узел для зацикливания массива items каждые 20 секунд параллельно ... каждая итерация цикла должна выполнять запрос GET к "https://example.com/?i=" + listItem ...

Итак .. Express.js работает нормально до первого запуска таймера!но при запуске таймера Express.js возвращает «Ошибка 504 времени ожидания шлюза»

Не является ли прослушиватель Express.js асинхронным?

РЕДАКТИРОВАТЬ : обратите внимание, что процессзапрос GET занимает время (например, 30 секунд на итерацию), потому что он делает что-то большое.

1 Ответ

0 голосов
/ 29 января 2019

Согласно комментариям, проблема заключалась в синхронных запросах, не позволяющих слушателям маршрутов своевременно отвечать.

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