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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计时器运行时,Express.js上的504 Gateway Timeout错误相关的知识,希望对你有一定的参考价值。

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秒)因为它做了大事。

答案

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

以上是关于计时器运行时,Express.js上的504 Gateway Timeout错误的主要内容,如果未能解决你的问题,请参考以下文章

express.js 网站图标未显示

AWS 上的 504(网关超时)

连接 Facebook Graph API 时 ElasticBeanstalk for PHP 上的 504 网关超时

Docker 的 Nginx 504 网关超时

如何在超级终端中停止运行 Node.js (Express) 服务器

从 Nginx 到 express.js 上的 socket.io 的反向代理上的“无法获取”