투케이2K

114. (NodeJs) [Mac Os] [Schedule] : node-schedule 스케줄 동작 Role 규칙 String 문자열 형식 정의 방법 본문

NodeJs

114. (NodeJs) [Mac Os] [Schedule] : node-schedule 스케줄 동작 Role 규칙 String 문자열 형식 정의 방법

투케이2K 2024. 1. 26. 09:06

[개발 환경 설정]

개발 툴 : VS CODE

개발 언어 :NodeJs

 
 

[사전) NodeJS 프로젝트 설정 방법]

 

[app.js : 소스 코드]

 

// ----------------------------------------------------------------------------------------------

// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
const express = require('express')
const app = express()



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
app.set('view engine', 'ejs') // [Page] : [Render]
app.set('views', './views') // [Page] : [Render]



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
var bodyParser = require('body-parser'); // [body-parser 사용]

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
var nocache = require('nocache'); // [nocache 사용]
app.use(nocache());



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
const schedule = require('node-schedule'); // [노드 서버 스케줄러]


// ----------------------------------------------------------------------------------------------

/**
 * ----------------------------------
 * [노드 서버 스케줄러 동작 정의]
 * ----------------------------------
 * 1. Role 설정 순서 (순차적) : 
 * 
 * second(0-59)
 * minute(0-59)
 * hour(0-23)
 * day(1-31)
 * month(1-12)
 * day of week(0-7)
 * ----------------------------------
 * 2. 예시 : 매분 30 초 마다 스케줄 동작
 * 
 * [30 * * * * *]
 * ----------------------------------
 * 3. 예시 : 매일 특정 시간 및 특정 분에 동작 (오후 3시 30분)
 * 
 * [* 30 15 * * *]
 * ----------------------------------
*/

const scheduleRole = "30 * * * * *" // [스케줄 동작 규칙 지정]

const job = () => {
    schedule.scheduleJob(scheduleRole, function(){

        // [시간 계산]
        const curr = new Date();
        const utc = curr.getTime() + (curr.getTimezoneOffset() * 60 * 1000);
        const KR_TIME_DIFF = 9 * 60 * 60 * 1000;
        const kr_curr = new Date(utc + (KR_TIME_DIFF)).toLocaleString();
    
    
        console.log("")
        console.log("==============================================================================")
        console.log("[Server] :: [App] :: [scheduleJob] :: [Start]")
        console.log("--------------------------------------------------------------------------")
        console.log("[Now Date] :: " + kr_curr)
        console.log("==============================================================================")
        console.log("")
    });
}

// ----------------------------------------------------------------------------------------------

// [Server] : [Start]
//*
app.listen(3000, function () {
    console.log("")
    console.log("==============================================================================")
    console.log("[Server] :: [Port = 3000] :: [Start]")
    console.log("==============================================================================")
    console.log("")

    // [서버 구동과 동시에 스케줄 동작 지정]
    job();
})
// */

// ----------------------------------------------------------------------------------------------
 

[결과 출력]


반응형
Comments