计时器正在运行时Express.js上的504网关超时错误

时间:2019-01-29 08:18:14

标签: javascript node.js express timer

每20秒运行一次JavaScript计时器时,我在Express.js应用上收到“ 504网关超时”错误。

这是我的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网关超时错误”

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

编辑:请注意,GET请求的过程会花费一些时间(例如,每次迭代需要30秒),因为它的工作量很大。

1 个答案:

答案 0 :(得分:1)

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