【问题标题】:Deploy nodeJS App without http server on Heroku在 Heroku 上部署没有 http 服务器的 nodeJS 应用程序
【发布时间】:2017-06-12 21:08:55
【问题描述】:

我目前正在使用 heroku (www.heroku.com) 来托管我的网络应用程序:http://jeveuxskier.ski,它作为一个 http 应用程序运行良好。 现在我想将一个非 http nodeJS 应用程序部署到 heroku。基本上,它只是一个每天 1:30 调用 web 服务并将结果存储到我的 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());  
});

提前致谢,

最好的问候,

昆汀·贝内特

【问题讨论】:

  • 你检查过工人测功机而不是网络测功机吗? Heroku website
  • 我有这样的结果:“在进程形成中找不到类型工作者。”而且我很确定工人会在免费版本中睡觉:(

标签: node.js heroku service cron


【解决方案1】:

如果您使用免费的测功机,您的网络应用程序将ALWAYS sleep after 30 minutes。没有办法解决这个问题。如果您想拥有非睡眠测功机,则需要使用付费测功机。

话虽如此,您确实可以使用免费的工人测功机。此测功机将持续运行,并且不需要网络服务器即可运行。

您可以这样做(这是一个完整的、工作的示例应用程序,我刚刚自己部署和测试):

过程文件

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.

【讨论】:

  • 非常感谢您的回答,我会尽快测试!
猜你喜欢
  • 2018-04-18
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2016-09-22
  • 2019-09-04
相关资源
最近更新 更多