Node.js를 위한 3가지 작업 스케줄링 패키지

⏳ 작업 예약을 사용하면 예약된 날짜/시간, 반복 간격 또는 지정된 간격 후에 한 번 코드가 실행되도록 예약할 수 있습니다. Linux에서 이것은 종종 cron 와 같은 패키지에 의해 처리됩니다. 이 기사에서는 Node.js 앱에 대한 cron과 유사한 기능을 에뮬레이트하는 상위 4가지 작업 예약 패키지를 보여 드리겠습니다.

노드 크론


node-cron 모듈은 GNU crontab 기반 node.js용 순수 JavaScript의 작은 작업 스케줄러입니다. 이 모듈을 사용하면 전체 crontab 구문을 사용하여 node.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은 Node.js를 위한 유연한 cron과 유사하지 않은 작업 스케줄러입니다. 이를 통해 선택적 반복 규칙을 사용하여 특정 날짜에 실행할 작업(임의 기능)을 예약할 수 있습니다. 주어진 시간에 단일 타이머만 사용합니다(매초/분마다 예정된 작업을 재평가하는 대신).

    인기


  • 1.941.398 주간 다운로드(이 기사 시점까지)

  • 설치


    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는 다음을 제공하는 Node.js용 경량 작업 스케줄링 라이브러리입니다.
  • 최소한의 오버헤드. Agenda는 코드 기반을 작게 유지하는 것을 목표로 합니다.
  • Mongo 지원 지속성 계층.
  • 약속 기반 API.
  • 구성 가능한 우선 순위, 동시성 및 반복을 사용하여 예약합니다.
  • cron 또는 사람이 읽을 수 있는 구문을 통한 스케줄링.
  • 연결할 수 있는 이벤트 지원 작업 대기열입니다.

  • 인기


  • 55.774 주간 다운로드(이 기사 시점까지)

  • 설치



    npm


    agenda를 사용하여 npm를 설치할 수 있습니다.

    $ npm install agenda
    


    또한 이를 가리킬 작업Mongo 데이터베이스(v3)가 필요합니다.

    CJS / 모듈 수입



    일반 자바스크립트 코드의 경우 기본 진입점을 사용하세요.

    const Agenda = require('agenda');
    


    Typescript, Webpack 또는 기타 모듈 가져오기의 경우 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();
    })();
    


    👋 그리고 당신은? Node.js에서 cron 작업을 수행하기 위해 이러한 패키지나 다른 패키지를 사용한 적이 있습니까? 😃 아래에 자유롭게 댓글을 남겨주세요.

    📱 연락 유지
    이 기사가 마음에 들면 팔로우하는 것을 잊지 말고 다음을 통해 저를 팔로우하여 향후 최신 소식을 받아보세요.

    트위터:
    매체: https://richard-wynn.medium.com
    Github: https://github.com/richard-wynn

    좋은 웹페이지 즐겨찾기