如何在本地运行自定义时钟进程作业?
我试图实现自定义时钟进程模型,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 local
或foreman start
,我得到所有进程的立即SIGTERM。 这似乎是因为工作进程立即退出,但这是否意味着我需要在端口上进行监听? 这样做是否不符合仅在需要时才会激活的简化工作stream程的目的呢?
只要运行它与node clock.js
您可以testing代码的个别部分(用index.js或bot.jsreplaceclock.js),但不能将它们一起运行。
确保在运行clock.js之前,将cronjob更改为执行每分钟或任何您喜欢的任何操作