3ノードのためのタスクスケジューリングパッケージ.js


⏳ タスクスケジューリングを使用すると、スケジュールされた日付/時刻で、定期的な間隔で実行されるか、指定された間隔の後に一度コードをスケジュールすることができます.Linuxでは、このようなパッケージは、cron . この記事では、ノードのcronのような機能をエミュレートするトップ4タスクスケジューリングパッケージを紹介します.jsアプリ.

Node Cron
The node-cron モジュールは、小さなタスクスケジューラのための純粋なJavaScriptのノードです.GNU crontabに基づくJS.このモジュールでは、タスクをノードでスケジュールできます.完全なcrontab構文を使用しているjs.

人気
  • 1.449.775ウィークリーダウンロード(この記事の時間まで)

  • インストール
    インストールできますnode-cron 使用によってnpm .
    $ npm install --save node-cron
    


    var cron = require('node-cron');
    
    cron.schedule('* * * * *', () => {
      console.log('running a task every minute');
    });
    

    Node Schedule
    ノードのスケジュールは、柔軟なcronのようなものではなく、ノードのcronのようなジョブスケジューラです.jsそれはあなたが特定の日付で実行のためのジョブ(任意の関数)をスケジュールすることができます任意の回帰ルールで.それは唯一の任意の時点で(1秒ごとに/今後のジョブを再評価するよりも)1つのタイマーを使用します.

    人気
  • 1.941.398 Weeklyダウンロード(この記事の時代まで)

  • インストール
    インストールできますnode-schedule 使用によってnpm .
    $ npm install node-schedule
    


    const schedule = require('node-schedule');
    
    const job = schedule.scheduleJob('42 * * * *', function(){
      console.log('The answer to life, the universe, and everything!');
    });
    

    Agenda
    アジェンダは、ノードのための軽量ジョブスケジューリングライブラリです.提供するJS
  • 最小限のオーバーヘッド.アジェンダはコードベースを小さく保つことを目指している.
  • モンゴー支持持続層
  • 約束ベースのAPI.
  • スケジューリング可能な優先度,同時性,反復によるスケジューリング
  • cronまたは人間が読める構文によるスケジューリング
  • あなたがフックすることができるイベントバックジョブキュー.

  • 人気
  • 55.774 Weeklyダウンロード(この記事の時代まで)

  • インストール

    国立天文台
    インストールできますagenda 使用によってnpm .
    $ npm install agenda
    
    また、作業が必要になりますMongo データベース(v 3)をポイントします.

    モジュールのインポート
    通常のJavaScriptコードの場合は、デフォルトの
    const Agenda = require('agenda');
    
    タイプスクリプト、ウェブパックまたは他のモジュール輸入のためにagenda/es エントリポイント:
    import { Agenda } from 'agenda/es';
    
    注意:
  • あなたがから移っているならば@types/agenda また、インポートをインポートする必要がありますagenda/es .
  • の代わりにimport Agenda from 'agenda' 用途import Agenda from 'agenda/es' .


  • const mongoConnectionString = "mongodb://127.0.0.1/agenda";
    
    const agenda = new Agenda({ db: { address: mongoConnectionString } });
    
    // Or override the default collection name:
    // const agenda = new Agenda({db: {address: mongoConnectionString, collection: 'jobCollectionName'}});
    
    // or pass additional connection options:
    // const agenda = new Agenda({db: {address: mongoConnectionString, collection: 'jobCollectionName', options: {ssl: true}}});
    
    // or pass in an existing mongodb-native MongoClient instance
    // const agenda = new Agenda({mongo: myMongoClient});
    
    agenda.define("delete old users", async (job) => {
      await User.remove({ lastLogIn: { $lt: twoDaysAgo } });
    });
    
    (async function () {
      // IIFE to give access to async/await
      await agenda.start();
    
      await agenda.every("3 minutes", "delete old users");
    
      // Alternatively, you could also do:
      await agenda.every("*/3 * * * *", "delete old users");
    })();
    
    agenda.define(
      "send email report",
      { priority: "high", concurrency: 10 },
      async (job) => {
        const { to } = job.attrs.data;
        await emailClient.send({
          to,
          from: "[email protected]",
          subject: "Email Report",
          body: "...",
        });
      }
    );
    
    (async function () {
      await agenda.start();
      await agenda.schedule("in 20 minutes", "send email report", {
        to: "[email protected]",
      });
    })();
    
    (async function () {
      const weeklyReport = agenda.create("send email report", {
        to: "[email protected]",
      });
      await agenda.start();
      await weeklyReport.repeatEvery("1 week").save();
    })();
    
    👋 それで?これまでにこれらのパッケージや別のパッケージを使用してノードでcronのものを行うことがあります.JS ?コメントを無料で置く😃
    📱 連絡を取り合う
    この記事のような場合は、以下のことを忘れないでください.
    Twitter
    培地https://richard-wynn.medium.com
    ギタブhttps://github.com/richard-wynn