Node.jsアプリケーションでクラスタリングを実行しました。私はapp.jsにSRV_TYPE = cron環境変数を渡すと起動される私のアプリケーションにcronジョブサービスを持っています質問はCRONジョブ用の1つのプロセスを割り当てます。node.js
私のcronジョブを実行するプロセスは1つだけです。 これはコードshared on gist github
Node.jsアプリケーションでクラスタリングを実行しました。私はapp.jsにSRV_TYPE = cron環境変数を渡すと起動される私のアプリケーションにcronジョブサービスを持っています質問はCRONジョブ用の1つのプロセスを割り当てます。node.js
私のcronジョブを実行するプロセスは1つだけです。 これはコードshared on gist github
一つの方法である:つまり
// In the master:
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork({ RUN_CRON : process.env.SRV_TYPE === "cron" && i === 0 });
}
// In the worker:
if (process.env.RUN_CRON === 'true') {
...create the scheduler...
}
:あなたは、各労働者に環境変数RUN_CRON
を渡し、SRV_TYPE
がcron
に設定し、それはですされている場合、それは文字列true
が含まれていますフォークされた最初のワーカープロセス。
問題はまだチェックアウトされています[screenshot](http://imgur.com/a/hjp0q) –
私は問題が表示されません?ワーカー1は、「App Starting ... on」_メッセージをログに記録していないので、cronパートを実行しているものになります。 – robertklep
これを実装する方法はたくさんあります。 cronジョブ用に別のインスタンスを実行できます。マスターでのみcronジョブを実行できます。
ノード用の小さなモジュールcronivoを書きましたが、laterJsとredisを使用して、クラスタまたはマルチプロセスでも1回だけcronジョブを実行できるようにしました。最初に使用可能なインスタンスのみがジョブを実行します。インスタンスのどれでもジョブを実行できますが、ジョブは1つのみです。
Cronジョブの処理を担当する完全に別個のアプリケーション(cronと言うことができます)を実行するとどうでしょうか。このようにして、懸念を分けることができます。メインアプリからcronアプリにメッセージ/タスクを渡す必要がある場合は、メッセージングシステムにRabbitmqを使用できます。 – guptakvgaurav