본문 바로가기
개발/AWS

pm2 flag로 5분마다 재실행시키기

by beomcoder 2024. 3. 6.
728x90
반응형
 

백그라운드로 파이썬 파일 실행 관리하기

해결한지는 좀 됐지만 그래도 잊어버리지 않게 정리하려고 한다. AWS에서 프로세스를 1~2개를 관리할때는 문제가 생기지 않았는데 4~5개를 관리하려고 하니까 문제가 많이 생겼다. 처음엔 nohup으

beomcoder.tistory.com

 

이렇게 만들고 나서 새로운 버전에 대한 프로젝트를 진행하고 있었다. 기존의 방식은 24시간동안 계속 돌아가면서 코드안에서 스케줄링으로 일정시간마다 실행시키는 방법이었는데, 이게 좋지 않다고 판단했다. 그래서 코드를 빨리 끝내고 백그라운드단에서 코드를 주기적으로 다시 실행시키는 새로운 방식으로 코드를 전부 새로 짜게 되었다. 테스트를 다하고 서버에 적용시켜보려고 pm2에 업로드를 시키게 되었다.

 

기존의 방식으로는 문제가 없었는데, 꺼져야될 파일이 꺼지자마자 다시 실행되었다. 그렇게 되니 10분마다 한번씩만 실행시키려고 했던 계획이 틀어졌다. 방법을 찾다보니 기존에 썼던 crontab, shell script도 안쓰게 되는 방법을 찾았다. 엄청 간단하고 추가적으로 뭘 해야하는 것도 없어서 만족했다.

 

pm2 start main.py --cron "*/10 * * * *"

 

pm2의 flag인 cron을 사용하는 것이다. 기존의 crontab의 방법과 똑같이 사용하면 된다. -- cron 을 하고 나서 본인이 반복해서 실행시키고 싶은 시간을 적으면 된다. */@로 적게되면 @분이나 @시간마다 반복해서 실행한다는 뜻이 된다. 나는 처음에 이렇게 적었더니 계속 실행하고, 설정한 시간대에 한번더 실행되었다. flag를 조금더 찾아보니 autorestart의 기능이 있어 이걸 껐더니 내가 원하는 방식대로 잘 실행되었다.

 

 

pm2 start main.py --name test_server --interpreter python3 --cron "*/10 * * * *" --no-autorestart

 

이렇게 명령어 한줄로 crontab, shell script를 안쓰고 해결할 수 있어 기분이 좋았다.

flag의 정보는 아래 사이트에서 확인할 수 있다.

 

 

PM2 - CLI | Reference | PM2 Documentation

Build Battle-Hardened Node.js Applications.

pm2.io

 

728x90
반응형

댓글