我目前正在使用 heroku (www.heroku.com) 托管我的网络应用程序:http://jeveuxskier.ski它作为一个 http 应用程序运行良好。 现在我想将一个非 http nodeJS 应用程序部署到 heroku。基本上,它只是一个每天凌晨 1:30 调用网络服务并将结果存储到我的 firebase 数据库中的 cron。
但是,我无法在 heroku 上部署它,因为它似乎想要启动一个 http 服务器来接收请求等。
我尝试将我的脚本放入 http 服务器,当我调用我的 heroku 容器 url 时,看起来 cron 服务启动良好,但几分钟后,容器进入贪睡状态。 如果有人知道如何将这种脚本部署到 heroku(免费)帐户:
var rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [0, new schedule.Range(0, 6)]; // every day
rule.hour = 1; // 1h to 1h30 am
rule.minute = 30;
var j = schedule.scheduleJob(rule, function(){
console.log("cron woke up at:" + new Date());
});
提前致谢
最好的问候,
昆汀·伯内特
最佳答案
如果您使用的是免费测功机,您的网络应用程序将 ALWAYS sleep after 30 minutes .没有办法解决这个问题。如果您想拥有非 sleep 测功机,则需要使用付费测功机。
话虽如此,您确实可以使用免费的 worker dyno。此测功机将持续运行,不需要网络服务器即可运行。
以下是您的操作方法(这是我自己部署和测试过的完整、有效的示例应用程序):
配置文件
worker: node worker.js
worker.js
console.log("Worker starting...");
setInterval(() => {
console.log("Worker still running.");
}, 1000);
package.json
{
"name": "test",
"version": "1.0.0",
"main": "worker.js",
"license": "ISC"
}
如果您将此应用推送到 Heroku (git push heroku master
),然后运行以下命令,您将运行一个免费的 worker dyno:
$ heroku ps:scale web=0 worker=1
如果您随后查看 Heroku 流式传输日志,您将看到您的工作进程确实在运行,您可以通过日志输出进行验证:
$ heroku logs --tail
2017-01-27T17:28:01.476780+00:00 heroku[worker.1]: Starting process with command `node worker.js`
2017-01-27T17:28:02.206558+00:00 heroku[worker.1]: State changed from starting to up
2017-01-27T17:28:03.810579+00:00 app[worker.1]: running worker...
2017-01-27T17:28:04.819944+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:05.821946+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:06.822191+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:07.826204+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:08.830177+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:09.831974+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:10.834909+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:11.834361+00:00 app[worker.1]: Worker still running.
2017-01-27T17:28:12.835244+00:00 app[worker.1]: Worker still running.
关于node.js - 在 Heroku 上部署没有 http 服务器的 nodeJS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889672/