Node.js: Cronジョブ

Node.jsでcronジョブを使ってタスクを効果的に自動化する

👋 Stackhero ドキュメントへようこそ!

Stackhero は、すぐに使える Node.js クラウド 環境を提供し、開発スピードを加速します:

  • シンプルな git push だけで、数秒で本番環境にデプロイ。追加ツールや手動設定は不要です。
  • 独自ドメインを利用でき、自動 HTTPS 証明書により追加設定なしでアプリケーションのセキュリティを確保します。
  • 自動バックアップワンクリックアップデート予測可能な料金体系で、機能開発に集中できるよう Stackhero がインフラ管理を担当します。
  • プライベートかつ専用インフラ上に構築されており、安定したパフォーマンスと高いセキュリティを実現します。

運用負荷を削減し、時間を節約:わずか数分で Stackhero の Node.js クラウドホスティング 上でアプリケーションを稼働させることができます。

Node.jsアプリケーションを開発する際、スケジュールされたメールの送信、期限切れデータのクリーンアップ、定期的なメンテナンスの実行などの繰り返しタスクを自動化することで、効率性とスケーラビリティを大幅に向上させることができます。npmで利用可能なcronモジュール(cronモジュール on npm)は、このような自動化を実装するための簡単で効果的な方法を提供します。

注: node-cron npmモジュールもcronタスクのための利用可能なツールですが、このガイドは特にcronモジュールとその実装に焦点を当てています。

プロジェクトでcronモジュールを使用するには、次のコマンドを実行して依存関係として含めます。

npm install cron

モジュールがインストールされたら、アプリケーションでcronジョブをスケジュールして管理を開始できます。以下は実用的な例です。

const cron = require('cron');
const cronJobs = [];

// アプリケーションのシャットダウンを優雅に処理するために、すべてのスケジュールされたcronジョブを停止します。
// 新しいコードをデプロイする際やアプリをシャットダウンする際に、終了シグナル(SIGTERM)が送信されます。
// これにより、アプリは終了する前にすべての実行中のcronジョブを停止します。
process.on('SIGTERM', () => {
  cronJobs.forEach(cronJob => cronJob.stop());
});

// 毎秒実行するcronジョブをスケジュールします。
cronJobs.push(
  new cron.CronJob(
    '* * * * * *', // スケジュール: 毎秒
    () => {
      console.log("このメッセージは毎秒表示されます。");
    },
    null,
    true
  )
);

// 毎分実行するcronジョブをスケジュールします。
cronJobs.push(
  new cron.CronJob(
    '0 */1 * * * *', // スケジュール: 毎分
    () => {
      console.log("このメッセージは毎分表示されます。");
    },
    null,
    true
  )
);

cronモジュールは、スケジュールを定義するために標準のUNIX cron構文を使用します。以下はいくつかの一般的な例です。

  • 毎秒: * * * * * *
  • 30秒ごと: */30 * * * * *
  • 10分ごと: 0 */10 * * * *
  • 2時間ごと: 0 0 */2 * * *

これで、Node.jsアプリケーションでcronモジュールを使用してタスクを自動化する準備が整いました。詳細な情報や例については、公式cronモジュールリポジトリを訪れ、例のディレクトリをチェックしてください。