如何在本地运行自定义时钟进程作业?

我试图实现自定义时钟进程模型,herokubuild议基于定制的cron调度,在这里find。

我的Procfile与链接中build议的相同:

web: node index.js worker: node bot.js clock: node clock.js 

我的应用程序住在index.js ,我可以成功运行与heroku local web并通过http://localhost:5000看到我的内容。 问题是,我的应用程序的某些操作会导致计划工作,这是我目前没有成功开展工作的一部分。 我从这个教程启发了这段代码。

我的clock.js文件如下所示:

 var CronJob = require('cron').CronJob; var bot = require('./bot.js'); function setupJob(cronTimeFormatString) { new CronJob({ cronTime: cronTimeFormatString, onTick: bot.setupJob(), start: true, timeZone: "America/Los_Angeles" }); } 

目标是从我的应用程序以这样的方式调用这个:

  var clock = require('./clock.js'); clock.setupJob('00 00 11 * * 1-5'); // this is a job that runs on weekdays at 11am 

目前, bot.js看起来像:

 module.exports = { setupJob: function() { /* do stuff */ console.log("start background job"); } }; 

第一个问题是所有这一切需要? 我的最终目标是设置一个可以运行用户定义次数的cron作业,但是从我的探索来看, Heroku Scheduler的function还不够强大。

但是,实际的问题是,当我尝试运行工作进程旁边的时钟和应用程序,使用或者heroku localforeman start ,我得到所有进程的立即SIGTERM。 这似乎是因为工作进程立即退出,但这是否意味着我需要在端口上进行监听? 这样做是否不符合仅在需要时才会激活的简化工作stream程的目的呢?

只要运行它与node clock.js

您可以testing代码的个别部分(用index.js或bot.jsreplaceclock.js),但不能将它们一起运行。

确保在运行clock.js之前,将cronjob更改为执行每分钟或任何您喜欢的任何操作