일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- multicall
- ambiguous function description
- Vue
- rust 기초
- ethers
- vue기초
- 머신러닝기초
- 스마트컨트렉트 함수이름 중복 호출
- 러스트 기초 학습
- ethers v6
- chainlink 설명
- 러스트기초
- 체인의정석
- SBT표준
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트테스트
- 계정추상화
- ethers type
- git rebase
- 오블완
- Vue.js
- 티스토리챌린지
- 스마트 컨트렉트 함수이름 중복
- ethers websocket
- erc4337
- erc4337 contract
- ethers typescript
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트 기초
- 컨트렉트 배포 자동화
- Today
- Total
체인의정석
주기적으로 재시작 하는 node.js 프로그램 만들기 (pm2 ecosystem, crone) 본문
1. pm2 ecosystem 사용해서 만들기
이걸 잘 쓰면 도커를 사용한것과 같이 여러개의 봇들을 잘 관리할 수 있다.
먼저 pm2를 설치한 후에 기본적인 설정 파일을 만들어준다.
아래 사이트를 참고하였다.
https://pm2.keymetrics.io/docs/usage/restart-strategies/
PM2 - Restart Strategies
Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance.
pm2.keymetrics.io
env의 경우 dev.env로 따로 만들어 두었으며
다음과 같은 파일을 명령을 실행하는 위치 (env와 동일한 위치)에 넣어주면된다.

ecosystme.config.js
module.exports = {
apps: [
{
name: 'eventbot',
script: './script/example.js',
cron_restart: '*/10 * * * *', // 매 10분마다 실행
watch: false,
env: {
NODE_ENV: 'dev'
}
}
]
};
참고로 cron 시간의 경우
https://crontab.guru/every-10-minutes
Crontab.guru - The cron schedule expression generator
loading... We created Cronitor because cron itself can't alert you if your jobs fail or never start. Cronitor is easy to integrate and provides you with instant alerts when things go wrong. Sign Up Free
crontab.guru
위의 사이트에서 미리 측정하고 돌려볼 수 있다.
2. 일반 pm2 + 특정 시간이 지나면 알아서 멈추도록 하는 로직
// Terminate the process after a specific time (e.g., 1 hour = 3600000 ms)
const terminationTime = 360000; // 10 min
setTimeout(() => {
console.log("Terminating process after 1 hour");
process.exit(0); // Graceful exit
}, terminationTime);
다음 코드를 넣어주면 10분 뒤에 알아서 종료가 되게 되고 pm2는 알아서 재시작을 하게 된다.
'개발 > backend(js,ts)' 카테고리의 다른 글
node.js) dotenv를 이용한 환경변수 분리 및 winston을 이용한 logger 만들기 (0) | 2024.11.21 |
---|---|
winston으로 백엔드 로그 관리하기 (1) | 2024.09.04 |
mac에서 Jmeter 설치 및 사용해서 api 테스트해보기 (0) | 2024.02.13 |
nestjs-telegraf 사용해보기 (Nest.js 텔레그램봇) (0) | 2023.11.27 |
ethers & websocket 참고 예제 (0) | 2023.11.27 |