파이썬 스케줄 패키지 : 파이썬으로 작업 예약하고 자동 실행하기

파이썬으로 작업 예약하고 자동 실행하기 : schedule 패키지

“파이썬 프로그래밍 time 이해: timestamp, UTC, KST” 이라는 포스팅에서 시간을 다루는 다양한 방법을 익혔습니다. 이번 포스팅에서는 그 지식을 확장해서, 작업을 예약하고 자동으로 실행하는 방법을 알아보겠습니다. 파이썬 스케줄(schedule) 패키지를 활용해 작업을 자동화하고, 원하는 시간에 프로그램이 실행되도록 설정하는 방법을 이해하는 것이 목적입니다.

 

 


글의 순서

파이썬 작업 예약 실행 : 스케줄 패키지
파이썬 스케줄 패키지 설치 : pip install schedule
schedule 패키지 기본 사용법
파이썬 스케줄 패키지로 특정 시간에 작업 예약하는 방법
파이썬 스케줄 패키지로 특정 시간대에 작업 예약하는 방법


파이썬 작업 예약 실행 : 스케줄 패키지

프로젝트를 진행하다 보면, 특정 작업을 주기적으로 실행해야 하는 경우가 자주 발생합니다. 예를 들어, 주식 데이터를 매일 아침에 수집하거나 서버 상태를 주기적으로 체크하는 작업 등을 들 수 있습니다. 만약 작업을 예약하고, 자동으로 실행할 수 있다면 많은 시간을 절약할 수 있을 것입니다. 파이썬 스케줄(shchedule) 패키지가 이를 간편하게 처리할 수 있게 해줍니다. 심지어 파이썬 스케줄 패키지를 활용하면 작업을 예약하고, 정해진 주기 혹은 특정 시간에 자동으로 실행할 수 있습니다.

 

 


파이썬 스케줄 패키지 설치 : pip install schedule

파이썬의 schedule은 작업을 간단하게 예약할 수 있는 패키지입니다. 주기적으로 반복되는 작업이나 특정 시간에 실행되는 작업을 예약하고 관리할 수 있는데, 다른 스케줄링 라이브러리에 비해 사용법이 직관적이고 쉽습니다. pip install schedule의 방법으로 설치합니다.


파이썬 schedule 패키지 기본 사용법

작업을 예약하는 기본적인 방법부터 시작해보겠습니다. 실습코드01은 현재 시간을 3초마다 출력합니다.

실습코드01에서 schedule.every(3).seconds.do(job)는 3초마다 job() 함수를 실행하라는 의미입니다. 즉, 3초마다 현재시간을 출력하는 job 함수가 예약됩니다. 그렇지만 예약만으로 작업이 자동으로 실행되지는 않습니다. schedule.run_pending()이 예약된 작업들을 확인하며, 실행시간에 다다른 작업이 있다면 그 작업을 실행합니다. 다시말해 schedule.run_pending()은 작업을 예약하고 주기적으로 실행되도록 보장하는 핵심적인 함수입니다.

실습코드01을 실행시키면 현재 시간을 3초마다 무한히 출력합니다. whlie True: 라는 무한반복문을 실행시키기 때문입니다. 실습코드01 실행결과는 3개의 시간이 출력되는 것을 확인하고 강제 종료시킨 결과입니다.




파이썬 스케줄 패키지로 특정 시간에 작업 예약하는 방법

작업을 정해진 시간에만 실행하고 싶다면 schedule.every().day.at() 함수를 사용할 수 있습니다. 예를 들어, 오전 9시 30분에 작업을 실행하도록 예약하는 구문은 다음과 같습니다. 실습코드01에서 3초마다 job()을 실행하도록 예약해둔 schedule.every(3).seconds.do(job)을 아래와 가이 바꾸기만 하면 매일 오전 09:30에 오전 09:30에 자동으로 job()을 실행합니다.

schedule.every().day.at(“09:30”).do(job)


파이썬 스케줄 패키지로 특정 시간대에 작업 예약하는 방법

실습코드02에 현재시간 5초 후부터 15초 사이에 5번의 작업 예약 방법을 나타내었습니다. 현재시간부터 5초~45초 구간에 5번 작업이 예약됩니다. time_list라는 변수에 작업을 실행시켜야 할 시간을 저장해둔 후, 매일 time_list에 들어있는 시간이 되면 작업을 수행합니다.

실습코드02의 실행결과에서 time_list에 어떤 값이 들어있는지, 그 시간에 실제로 작업이 실행되었는지를 확인할 수 있습니다.

그런데, 5개의 시간을 출력하고 난 후에도 프로그램이 종료되지 않습니다. schedule.run_pending()이 무한반복문 내에서 실행되어야 하기 때문입니다. 됩니다. 만약 코드를 멈추고 싶다면 작업이 모두 끝났을 때 루프를 종료하는 추가적인 조건이 필요하며, brake 문을 이용하여 종료할 수 있습니다.




마치며 …

이번 포스팅에서는 파이썬에서 작업을 예약하고 자동으로 실행하는 방법에 대해 알아보았습니다. schedule 패키지를 사용하면 주기적으로 반복되는 작업이나, 특정 시간에 작업을 실행할 수 있습니다. 이를 이용하면 자동화된 작업 흐름을 구축할 수 있습니다. 파이썬 스케줄 패키지로 반복 작업을 효율적으로 관리해보시기 바랍니다.

 

 

함께 참고하면 좋은 글
파이썬 프로그래밍 time 이해 : timestamp, UTC, KST
시계열 데이터 가시화 (3) 파이썬 날짜변환, pandas를 이용한 그래프 그리기


참고자료

schedule

Leave a Comment