私は、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の仕事を引き起こすことです、そして、私は今、成功することができていないこの部分です。私はこのコードからこの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"
});
}
目標は、同様の方法で私のアプリからこれを呼び出すために、次のようになります。
module.exports = {
setupJob: function() { /* do stuff */
console.log("start background job");
}
};
:
bot.js
は次のようになり、現在
var clock = require('./clock.js');
clock.setupJob('00 00 11 * * 1-5'); // this is a job that runs on weekdays at 11am
最初の質問はすべてこれが必要ですか?私の最終目標は、ユーザーが定義した回数だけ実行するcronジョブを設定するだけですが、Heroku Scheduler
は、私の探索から私のニーズに十分強力ではありません。
実際の質問は、heroku local
またはforeman start
のいずれかを使用して、ワーカープロセスを時計とアプリケーションの上で実行しようとしたときに、すべてのプロセスに対して直ちにSIGTERMを取得します。それは、ワーカープロセスがすぐに終了するためですが、それはポートで聞く必要があるということですか?それが必要なときにのみ活動するスピンアップ作業者プロセスであるという目的を破ることはできないでしょうか?