Things take time

[NodeJS] 스케쥴러 및 Async 모듈 사용법 본문

Web/NodeJS

[NodeJS] 스케쥴러 및 Async 모듈 사용법

겸손할 겸 2019. 9. 5. 17:55

[개요]

 

현재 개발중인 앱의 서버사이드에서 사용하는 언어는 Node JS다. 웹 서비스만을 지원하는 영역은 JSP로 하는데, 앱 서버는 노드로 개발중인데, 어쩌다 새로운 기능을 추가하게 되었는데 서버단도 내가 하게되었다.

 

결론은 하나의 스크립트 페이지였지만, 노드를 해본적이없는 나는 2-3주간 삽질을..

 

기본적으로 원했던 기능은 이것이다.

 

하나의 스크립트는 정해진 시간마다 돌아간다(스케쥴러)

스크립트의 내용은 DB를 조회하고 대상 사용자를 출력하며, fs모듈을 이용해 파일을 접근, 작성하고 푸시를 발송하는 것까지.

 

여기서 중요한것은 스케쥴러와 함께 파일을 접근한다는 것이다.

파일을 접근한다는 것은, 실시간으로 서버가 켜져있을 때 일반 사용자들도 자신의 파일(서버에 업로드되어있는)을 열거나 쓰고 있는데, 이 스케쥴러는 그 안에 껴들어서 해야한다는 것이다.

var schedule = require( 'node-schedule' );
var async = require( 'async' );

fs모듈은 있다고 가정하고, 필요했던 스케쥴러와 async

if (ENV == "dev"){
	var j = schedule.scheduleJob( '4 * * * * *' ,function () {
		getPtnrUrlXml();
	} );
}else{
	var j = schedule.scheduleJob( '* * 9 * * *' ,function () {
		getPtnrUrlXml();
	} );
}

각 scheduleJob에 들어가는 파라미터는 초, 분, 시, 일, 월, 년이다.

그리고 '각 ~마다'를 붙이면 해석된다.

 

첫 번째 스케쥴러는 각 4초마다(0분 4초, 1분4초, 2분 4초... 59분 4초), 4초마다가 아니라 4초가 들어가는 각각 마다 이다.

두 번째 스케쥴러는 각 9시마다