我希望在Heroku上运行的Nodejs应用程序每30秒运行一次任务。我将Heroku调度程序用于另一项任务,但这是因为它每天运行一次,并且Scheduler似乎可以正常运行,但是以此间隔运行不适合。
因此,我已经安装node-cron
并设置了一项工作,该工作每天30am,每天上午11点至下午6点之间运行(我基本上是在调用api,然后更新数据库),我可以在本地运行node cron.js
cron.js
const cron = require('node-cron');
const task = require('./scripts/task');
cron.schedule('*/30 * 11-18 * * *', () => {
console.log('Running Function');
task.runFunction();
});
我不确定100%知道如何在Heroku上运行此操作,因为他们的docs指定了这种设置(在Procfile中配置):
web: node web.js
worker: node worker.js
clock: node clock.js
当前Procfile
web: node server.js
是否将我的cron.js
更改为clock.js
?然后在worker.js
文件中包含内容? (尽管不确定什么)。
答案 0 :(得分:2)
您可能应该将clock.js更改为cron.js,或者,如您所说,将cron.js重命名为clock.js。
web: node web.js
worker: node worker.js
clock: node cron.js
此外,我不确定您的cron.js是否设置正确。从node-cron的文档中,您可能需要以下内容:
const CronJob = require('../lib/cron.js').CronJob;
console.log('Before job instantiation');`
const job = new CronJob('*/30 * 11-18 * * *', () => {
console.log('Running Function');
task.runFunction();
});
console.log('After job instantiation');
job.start();
答案 1 :(得分:0)
如果您的worker: node worker.js
中没有告诉他与该工作人员做某事,则不需要cron.js
这行。 (我不知道runFunctions()
会做什么)。如果您的应用程序仅是cron作业,则甚至不需要添加第一行。
因此,您只需拥有此配置文件即可:
clock: cron.js
如果需要,可以将clock
更改为cron
。这并不意味着:docs。