我試圖實現heroku建議的基於定製的cron調度的自定義時鐘進程模型,找到here。[Heroku] [Node.js]如何在本地運行自定義時鐘進程作業?
我Procfile是相同的一個建議中的鏈接:
web: node index.js
worker: node bot.js
clock: node clock.js
我的應用程序生命index.js
,我可以成功地與heroku local web
運行,看看我的內容通過http://localhost:5000
。但問題是,我的應用上的某些操作會導致計劃執行cron-job,而這一部分我現在還沒有成功開始工作。我從這個tutorial鼓舞這個代碼。
我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
對於我的需求來說不夠強大,從我的探索中。
但是,實際的問題是,當我嘗試運行工作進程旁邊的時鐘和應用程序時,使用heroku local
或foreman start
,我立即得到所有進程的SIGTERM。這似乎是因爲工作進程立即退出,但這是否意味着我需要讓它在端口上進行監聽?這不會破壞它僅僅是在需要時才被激活的簡單工作流程的目的嗎?