-
[ NodeJS ] node-schedule에서 클러스터 2개 중복 실행 방지Topic/Node.js | server 2023. 1. 7. 11:47반응형
- cron.service.js 로직
/** * 매일 같은 시간에 해당 날짜로 DB 생성하는 로직 * @returns {Promise<void>} */ const updateSchedule = async () => { // schedule.scheduleJob('00 08 10 * * 0-6', () => { // console.log('Cron-style Scheduling at 10:00 , Sun-Sat'); // }); let today = moment().format('YYMMDD'); let presentTime = moment().format('YY-MM-DD HH:mm'); mongoose.set('useFindAndModify', false); try { const TODAY = await Day.findOne({ date: today, }); if (TODAY) { console.log(`Today's document is already existed. time: ${presentTime}`); } else { await Day.create({ count: [], date: today, }); console.log(`Input success in DB! time: ${presentTime}`); } } catch (err) { console.error(err); } }; module.exports.updateSchedule = updateSchedule;
- app.js 로직
… /** 매일 같은 시간에 DB 생성하는 CronJob 등록 **/ if (process.env.pm_id === '2') { new CronJob({ cronTime: '00 * * * * *', onTick: cronService.updateSchedule, timeZone: 'UTC', }).start(); } …
pm2에서 실행시킨 클러스터를 확인 후 2번 클러스터에만 크론잡을 걸어주는 방식으로 진행하면 된다.
반응형'Topic > Node.js | server' 카테고리의 다른 글
[ NodeJS ] req에서 클라이언트 ip 추출하는 방법 (0) 2023.01.28 [ Redis ] 레디스 설치 및 실행 방법 (Mac | OSX) (0) 2023.01.20 [ NodeJS ] 클라이언트 접속자 아이피 가져오기 (0) 2022.11.09 Node js란 무엇일까? (다시 개념정리) (0) 2022.06.13 쿠키, 세션, 토큰 정리 (0) 2022.02.10