Я получаю 504 GATEWAY_TIMEOUT
http-ответ после 60-х страниц загрузки страницы.Получение 504 GATEWAY_TIMEOUT NodeJs
Это не фактическая страница, которая загружается, а не процесс, который выполняется. Я ожидаю, что это займет больше 60 секунд, и я попытался увеличить значение тайм-аута, но это не помогло.
Я использую экспресс-фреймворк для маршрутизации, и я принимаю работу на EB (AWS Elastic Beanstalk). Поскольку я увеличил все значения таймаута, которые я мог бы найти на EB и Load Balancers в консоли AWS, я предполагаю, что это должно быть самое приложение, у которого установлен тайм-аут до 60 секунд. Однако я могу ошибаться.
Мой код:
/* GET home page. */
router.get('/main',function(req, res, next) {
req.connection.setTimeout(600000);
mainProcess(res);
//res.send("mainProcess() called");
});
UPDATE:
Кроме этого, я попробовал другой подход. Я добавил этот код на app.js
:
var connectTimeout = require('connect-timeout');
var longTimeout = connectTimeout({ time: 600000 });
app.use(longTimeout);
не помогло.
UPDATE2: Я также попытался увеличить время ожидания в /bin/www
так:
var server = http.createServer(app);
server.timeout=600000;
Update3: Я заметил, что тайм-аут связан с конфигурацией Nginx. Как говорят мои журналы: upstream timed out (110: Connection timed out) while reading response header
Однако я не могу найти способ редактировать конфигурацию nginx на эластичном beanstalk. Я провел некоторое исследование, но все это кажется мне нестандартным и слишком жестким для такой простой вещи.
Попробуйте использовать пакет подключения тайм-аута в ваших аргументов запроса функции, как это: 'уаг таймаут = требуют (" подключения -timeout '); app.post ('/ test', timeout ('6s'), function (req, res, next) {console.log ('test')}) ' –
Спасибо, но я не вижу, где я могу сделайте это, поскольку у меня нет «app.post» где угодно. Экспресс-каркас сделал это по-другому. Существует только «приложение».use ('/', routes); ' –
Это был всего лишь пример в вашем первом коде в ответ, поставив его перед функцией запроса следующим образом: '/* GET домашняя страница. */ var timeout = require ('connect-timeout'); router.get ('/ main', timeout ('6s'), функция (req, res, next) { mainProcess (res); //res.send ("mainProcess() называется"); }) ; ' –