매시간마다 또는 특정 시간마다 기능을 실행하고싶다.
스케쥴러를 사용하는 방법이... 너~~~~~~무 쉽다.
Nest.js 공식문서에도 나와있고.. 음.. 너무 간단해서 당황했다.
npm i @nestjs/schedule
app.module.ts
에 추가한다.10초마다 console.log(Date());
를 실행한다.
이게 끝이다..!..? 으잉.. 이제 API를 호출해서 환율정보를 콘솔로 찍어보자.
자 이제 환율정보를 받아서 슬랙으로 메세지를 쏴주게끔 연결을 해보고 결과를 확인해보자.
짜잔~~~~~~슨 ㅋㅋㅋ 잘 됐다!!!
저 결과는 1분마다 오게 만들었지만 이제 1시간 또는 3시간마다 작동하게끔 설정해주면 된다.
중간까지 너무나 쉽다 했다...
환율정보 API를 호출하다보니
첫번째 호출은 성공
두번째 호출은 실패
세번째 호출은 성공
네번째 호출은 실패
이런식으로 실패를 하다보니 스케쥴러에 1분을 설정해놨다면
1분, 2분, 3분, 4분, 5분마다 메세지가 왔어야 하는데,
1분, 3분, 5분에 메세지가 왔다.
이 오류에 대한 얘기같은 사이트를 발견했다.
https://johnnyreilly.com/node-18-axios-and-unsafe-legacy-renegotiation-disabled
사실... 무슨소린지 잘 모르겠다..
그럼에도 해결해야했기에 저 사이트와 그 안에서 링크된 스택오버플로우를 들어가서 코드를 사용해보았지만 잘 되지 않았다.
문제를 해결해보고 싶었지만, 이미 많은 시간이 걸려서 다른 방법을 택하기로 했다.
바로 axios-retry를 이용하는 것이다.
이 패키지는 간단하게 얘기하면 axios요청이 실패하면 다시 요청을 해줍니다.
npm i axios-retry
axiosRetry(axios, {retries: 1});