计时器运行时,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错误的主要内容,如果未能解决你的问题,请参考以下文章
连接 Facebook Graph API 时 ElasticBeanstalk for PHP 上的 504 网关超时