다음날 특정 시간에 예약 실행하는 방법이 있는지 질문합니다.


(ddinggu) #1

안녕하세요.

단발성 예약메세지를 보낼 수 있는 슬랙봇을 만들고 있는데요,
nodejs에서 예약 실행하는 법을 찾고자 질문을 올립니다.

제가 생각해낸 방법은

  1. node-cron을 이용해 스케쥴을 예약한 후 메세지를 보낸 후에 등록한 스케쥴을 취소하는 법
  2. 예약날짜와 현재시간을 비교하여 setTimeout 타이머에 값을 넘겨주는 방법

이 두가지를 생각해봤습니다.

그러나, 1번 같은 경우 단 한번만 실행하면 되는 상황인데 굳이 스케쥴링을 이용하는게 맞나 싶고
2번은 비교한 시간의 정확성을 보장하지 못하고, 대기 시간이 길어지면 함수 실행 역시 보장하지 못하는것으로 알고 있습니다.

혹시 선배님들 중에 예약한 시간에 함수를 한번 실행할 수 있는 방법을 아시는분은 방법을 공유해 주셨으면 좋겠습니다.

답변 부탁드립니다.

감사합니다.


(InGrowth) #2

Node-cron으로 스케쥴링하는 동작을 만들고요.
그 동작에 근거가 되는 데이터는 persistant한 저장소(ex: DataBase)에 저장하셔야 합니다.
서비스가 재시작 되거나 해서 유실되면 안되니까요.

예를 들면 매분 동작하는걸 만들고, 동작 시간보다 예약시간이 지났으나 처리되지 않는 데이터를 조회해서 메시지를 보내고, 처리 되었다고 표시해야겠죠.


(ddinggu) #3

답변 감사합니다!!