node-schedule を使って Node.js で定期処理を行う

node-schedule という npm パッケージを使うと、Node.js で書いた一連の処理を定期実行できる。

まずはインストールしてみよう。

# 作業ディレクトリを作って npm init
$ mkdir example-node-schedule && cd $_ && npm init -y

$ npm install --save node-schedule

続いて、適当に main.js を作り、以下のように実装してみる。

const schedule = require('node-schedule');

const myJob = schedule.scheduleJob('*/5 * * * * *', (fireDate) => {
  console.log('定期実行', fireDate);
});

あとはコレを実行してみる。

$ node main.js

すると、コンソールに5秒おきに「定期実行」の文言が出力されるだろう。

scheduleJob() の第一引数で、定期実行するタイミングを指定するワケだが、コレは crontab の書式で指定できる。他にも Date オブジェクトや連想配列での指定もできる。

何かのタイミングでジョブを停止させるには、scheduleJob() の戻り値を格納した変数 myJob を指定して、

myJob.cancel();

と叩けば OK。


このパッケージを使えば、例えば Express サーバを起動すると同時に、毎日0時に実行するバッチ処理を定義したりもできるワケだ。簡単なバッチ処理ならコレで回せて便利だ。