计时器运行时,Express.js上的504 Gateway Timeout错误

问题描述 投票:0回答:1

当JavaScript计时器每20秒运行一次时,我的Express.js应用程序出现“504 Gateway Timeout”错误。

这是我的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);

所以,正如你所看到的:我使用node-in-parallel每20秒并行地循环数组items ...每个循环迭代应该对"https://example.com/?i=" + listItem做一个GET请求...

所以.. Express.js在计时器第一次启动之前工作正常!但是当计时器启动时,Express.js会返回“504 Gateway Timeout Error”

Express.js监听器不是异步的吗?

编辑:请注意,GET请求的过程需要时间(例如每次迭代30秒)因为它做了大事。

javascript node.js express timer
1个回答
1
投票

根据评论,问题是同步请求阻止路由侦听器在适当的时候回答。

© www.soinside.com 2019 - 2024. All rights reserved.