节点中的Heroku调度程序(用于日常任务) - 正确的文档?

时间:2017-08-10 03:49:23

标签: node.js heroku cron scheduled-tasks

我使用 Cron 创建了一个应用程序,以便在本地完成(在/project_root/scraper/index.js文件内)时抓取完美的数据:

const everyMorning = new CronJob('0 15 7 * * *', () => {
  //runScraper1(); runScraper2(); runScraper3(); (This runs at 7:15 AM)
}, null, true, 'America/Los_Angeles');

但是现在我把它放在Heroku上,我发现这个函数基本上不会运行,因为我猜Heroku在一些不活动之后关闭了服务器(大约一个小时左右)。看起来我需要使用Heroku Scheduler;但文档(Ruby),我不知道。我在Node中找到了大量关于如何做到这一点的脱节信息,所以这就是我收集的内容......

...

一个策略似乎是:

1)创建bin文件夹和herokuFile,如下所示:project_root/bin/node/herokuFile(将herokuFile重命名为您想要的任何内容,但不要使用扩展程序比如.js)。

2)将文件写成如下所示:

#! /app/.heroku/node/bin/node
var start = require('./app.js');
function activateTask() {
  start();
}
activateTask();
process.exit();

3)显然我应该将module.exports = start添加到我的app.js文件或类似内容......然后在终端中运行heroku run activateTask ...?

...

另一种策略似乎是:

a)运行heroku addons:create scheduler:standard以安装Heroku Scheduler,然后运行heroku addons:open scheduler以在浏览器中打开调度程序。然后在调度程序界面中,编写" worker" (没有节点)以便它显示$ worker,并将其设置为daily

b)在项目的根目录中添加名为Procfile的文件(不要更改名称,不要使用扩展名)。让Procfile说:

web: node app.js
worker: node herokuCron.js

c)制作一个herokuCron.js文件(也在project_root/bin/node/herokuFile中),然后说:

#!/usr/bin/env node
function logMessage() {
  console.log('GONG! An hour has passed and herokuCron.js has activated');
}
logMessage();

d)......?

...

毋庸置疑,这些方法都不适合我,我也不明白为什么(我只是一个初级开发者)。我到处寻找,但我无法弄清楚如何运行我简单的日常任务功能。

0 个答案:

没有答案