2016-04-24 30 views
2

我試圖實現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 localforeman start,我立即得到所有進程的SIGTERM。這似乎是因爲工作進程立即退出,但這是否意味着我需要讓它在端口上進行監聽?這不會破壞它僅僅是在需要時才被激活的簡單工作流程的目的嗎?

回答

1

只是node clock.js

運行它,你可以測試代碼的各個部分(更換index.js或bot.js clock.js),但不能運行它們放在一起。

確保您將cronjob更改爲執行每分鐘或任何您喜歡的操作之前執行的任務clock.js

相關問題