【问题标题】:Is it possible to run a node.js app in Heroku every *4 minutes*?是否可以每 * 4 分钟 * 在 Heroku 中运行一个 node.js 应用程序?
【发布时间】:2017-11-28 17:40:10
【问题描述】:

我有一个应用程序,我想在 Heroku(免费版)中运行一次,从周一到周五上午 10 点到晚上 10 点每 4 分钟运行一次。我曾经在 Digital Ocean 中使用 cron 作业来执行此操作,但我正在尝试迁移到 Heroku,因为它是免费的。但这甚至可能吗?从我所看到的一切来看,您似乎只能在 Heroku 上每 10 分钟运行一次。

这是一个简单的应用程序,每 4 分钟发送一次电子邮件更新。 谢谢。

【问题讨论】:

  • node有一个cron库,node-cron,或者如果可以通过API调用任务,可以通过windows使用定时任务。

标签: node.js heroku cron


【解决方案1】:

Heroku 没有让您每 4 分钟运行一次。正如您所提到的,Scheduler 插件将为您提供的最短时间是 10 分钟。

您可以设置一个始终运行的进程,并且每 4 分钟将您的任务排入队列/处理一次。

正如 garson 的评论中提到的,node-cron 可以很容易地为您处理这个问题。
例如以下代码:

var CronJob = require('cron').CronJob;
new CronJob('* */4 * * * *', function() {
  console.log('You will see this message every 4 minute');
}, null, true, 'America/Los_Angeles');

将每 4 分钟显示一次控制台消息。 您可以使用node index.js 运行它。

因此,如果您在 Procfile 中添加名称为 cron 的以下行并部署您的应用程序,您可以这样做:

heroku ps:scale cron=1

这个过程将无限期地执行,每 4 分钟执行一次您的代码。

【讨论】:

  • 感谢您的回复。您能否就如何设置始终运行的进程并每 4 分钟排队/处理任务提供任何指导?我不知道如何开始。
  • 我在答案中添加了一个示例。
猜你喜欢
  • 2015-04-12
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多