プログラミング

Node.jsで定期的にタスクを実行する方法

hebishima.shogo

はい、hebiです。

Linuxで定期的にタスクを実行するためにはcronを利用しますが、Node.jsではどうやるんだろ?と疑問に思ったので調べてみました。

Node.jsの場合、Linuxのcronよりもっと簡単に実現できました!

ぜひ、Node.jsで定期的にタスクを実行したい場合は本記事を参考にしてみてください。

ちなみに、Windowsの場合はタスクスケジューラがよく使われます。

Linuxと違って画面操作で設定できるのでとても使いやすいです。

スポンサーリンク

前提

以下の記事で作成したソースコードで確認していきます。

あわせて読みたい
TypeScriptでWebAPIを作ってみた(Node.js + routing-controllers)
TypeScriptでWebAPIを作ってみた(Node.js + routing-controllers)

スケジュール関数作成手順

node-cronのインストール

定期的に実行するためのnode-cronをインストールします。

npm install node-cron

node-cronの定義

node-cronを定義します。

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

スケジュール関数を作成

定期的に実行される関数を作成します。

cron.schedule('*/1 * * * *', async () => {
    try {
        // 定期的に実行する処理を書く
        const now = new Date();
        console.log(now);
    } catch (error) {
        console.error('Error', error);
    }
});

*/1を指定することで1分間隔でschedule関数が実行されます。

scheduleの第1引数には、分単位、時、日、月、曜日を表しています。

曜日には以下が入ります。

  • 0(日曜日)
  • 1(月曜日)
  • 2(火曜日)
  • 3(水曜日)
  • 4(木曜日)
  • 5(金曜日)
  • 6(土曜日)

例えば、* * * * 1 は、毎週月曜日に実行することを意味します。

「1 * * * *」だと「分」が1のときに実行されることを示します。つまり、毎時1分に1回だけ実行されます。意味合いが変わるのでご注意ください。

デバッグ実行してみると、1分ごとに実行されていることが分かります。

最後に

Node.jsで定期的にタスクを実行することはできましたでしょうか。

私の場合、実際に上がった以下要件をcronを使って実現しました。

  • データを他システムへ連携したい → 1時間おきに連携
  • 大量のファイルを1週間分のみ残したい → 1日1回クリーン処理
  • 締め切り間近のお客様にリマインドメール送信 → 1日1回日時をチェックし、対象顧客へメール送信

定期的に行いたいことはいっぱいありますよね( ;∀;)

Linuxでcron処理を行う方法も記事にしましたので、参考にどうぞ!

あわせて読みたい
【crontab】Linuxで定期的にタスクを自動実行する方法
【crontab】Linuxで定期的にタスクを自動実行する方法

最後までお読みいただきありがとうございました(^^♪

スポンサーリンク
ABOUT ME
hebi
hebi
エンジニア
フルスタックエンジニアとして活躍中。
HTML5プロフェッショナル認定Level1、Level2所持者です。

未経験の方でも簡単にプログラミングを学べるようにと情報を発信しております。
記事URLをコピーしました