【发布时间】:2018-09-04 03:49:40
【问题描述】:
我在 Heroku 上部署了一个 Node Express 应用程序。主页需要大约 50 个对外部服务的 HTTP 请求来显示数据。请求需要很长时间,所以我使用缓存。
现在我正在尝试定期向自己请求网页,以强制 Node 继续刷新和缓存数据。这样用户就不必等待 1 分钟才能看到该页面。
以下代码在本地完美运行。但在生产环境(Heroku)我得到Error: connect ECONNREFUSED
setInterval(function() {
var url = "http://127.0.0.1:" + (process.env.PORT || 3000);
try {
http.get(url, {})
} catch (err) {
console.error('Error refreshing data')
console.error(err)
}
}, 1 * 60 * 1000)
我试过了:
http://127.0.0.1:" + (process.env.PORT || 3000)https://127.0.0.1:" + (process.env.PORT || 3000)0.0.0.0
有什么方法可以找到正确的 ip/host 和端口?
更新
主机名 (https://nameofapp.herokuapp.com/) 确实有效。但是有什么方法可以在不知道宿主的情况下调用自己?
【问题讨论】:
-
"现在我想向自己请求网页,以强制 Node 继续刷新和缓存数据。"我发现这不清楚。这如何帮助您的用户完成他们的 50 个 HTTP 请求?或者你为什么要这样做?
-
对外部服务的所有 50 个 api 调用大约需要 1 分钟(甚至更多),并且在服务器中完成。我需要 Node 定期刷新该数据。调用我自己会使缓存的数据刷新(如果它已过期)。问题已更新。我觉得还不够清楚。谢谢!
标签: javascript node.js heroku axios