스케줄러 서비스란 무엇입니까?

9759 단어
스케줄러 서비스는 특정 시간 또는 간격으로 작업을 실행할 수 있는 기능을 제공합니다.

Node.js 스케줄러 서비스를 작성하는 방법은 무엇입니까?



대부분 .net core, elixir, node.js, go 언어 등과 같은 최신 프레임워크에서 스케줄러 서비스를 작성할 수 있습니다.

이 예에서는 node.js를 사용합니다. 이 예제를 따르려면 javascript에 대한 기본 지식이 필요합니다.

기본 스케줄러 서비스를 생성하려면 다음 단계를 수행하십시오.

1 - 서비스용 프로젝트 폴더 생성




mkdir scheduler-service && cd scheduler-service


2 - npm 초기화




npm init -y


3 - 다음 패키지를 설치합니다.


  • 노드 일정
  • log4js

  • 나는 cron과 같은 스케줄러 기능을 위해 node-schedule 패키지를 선택했고 로깅을 위해 log4js를 선택했습니다.

    4 - 자바스크립트 파일 생성


  • 예: schedule.js

  • 5 - 노드 일정 라이브러리 가져오기 및 scheduleJob 기능에 작업 할당



    -

    const schedule = require("node-schedule");
    
    const job = schedule.scheduleJob("*/1 * * * *", function () {
      console.log("every minute you will see this log");
    });
    


    위의 예에서 볼 수 있듯이 scheduleJob에는 2개의 매개변수가 있습니다.

    1 - 크론 표현식


  • Cron 표현식은 작업의 반복 시간을 초기화하는 데 사용됩니다. 일정의 개별 세부 사항을 설명하는 6개 또는 7개의 하위 표현식(필드)으로 구성된 문자열입니다.

  •                     
                        
                         day of week (0 - 7) (0 or 7 is Sun)
                    └───── month (1 - 12)
                └────────── day of month (1 - 31)
            └─────────────── hour (0 - 23)
        └──────────────────── minute (0 - 59)
    └───────────────────────── second (0 - 59)
    
    


    2 - 함수


  • 이 함수는 예약하려는 작업을 정의합니다
  • .

    log4js를 사용하여 다음을 기록하는 완전한 js 코드:

    const log4js = require("log4js");
    log4js.configure({
      appenders: { log: { type: "file", filename: "schedule.log" } },
      categories: { default: { appenders: ["log"], level: "info" } },
    });
    
    const logger = log4js.getLogger("log");
    
    logger.info("scheduler started.");
    const job = schedule.scheduleJob("*/1 * * * *", function () {
      logger.warn("every minute you will see this log");
    });
    


    systemd 서비스 파일을 작성하는 방법은 무엇입니까?



    서비스를 Linux 서비스에 등록하려면 systemd 서비스 파일을 만들어야 합니다.

    systemd 서비스 파일을 생성하려면 다음 단계를 수행하십시오.

    1 - Linux 터미널에 다음 명령 입력


  • vi/etc/systemd/system/schedule.service

  • 2 - 다음 내용을 입력하십시오.




    [Unit]
    Description=node service
    
    [Service]
    WorkingDirectory=/home/emin/node/
    User=ubuntu
    ExecStart=/usr/bin/node /home/ubuntu/hello_env.js
    Restart=on-failure
    RestartSec=10
    


    3 - sudo systemctl 데몬 재로드


  • system가 새 정보를 선택할 수 있도록 서비스 파일이 변경될 때마다 이 작업을 수행해야 합니다.

  • 4 - sudo systemctl 시작 일정



    5 - sudo systemctl 상태 일정


  • 이 명령은 서비스의 상태를 보여줍니다.

  • 서비스를 시작한 후 서비스 위치에 schedule.log 파일이 표시되어야 합니다.

    자원:




  • run-a-node-js-app-as-a-background-service
  • node-schedule
  • practical-implementation-net-core-background-services
  • node-js-app-with-systemd
  • 좋은 웹페이지 즐겨찾기