Skip to content

작동 시간 예약하기

Python 코드 작동 시간 예약하기


schedule module

Python 프로그램이 특정 시간에 자동으로 작동하게 하고 싶을 경우 schedule 패키지를 활용해서 아래와 같이 코딩하면 된다.

import time
import schedule

def job(): return print('hi')             # define job which you want to shcedule

schedule.every().day.at("18:00").do(job)  # assign schedule of the job

while True:                               # put the schedule into the infinite loop
    schedule.run_pending()                # Run all jobs that are scheduled to run
    time.sleep(1)                         # sleep process for a while

schedule 패키지의 run_pending 함수에 대한 설명은 아래와 같다.

Run all jobs that are scheduled to run.

Please note that it is *intended behavior that run_pending()
does not run missed jobs*. For example, if you've registered a job
that should run every minute and you only call run_pending()
in one hour increments then your job won't be run 60 times in
between but only once.

경고문이 하나 있는데, run_pending 함수가 실행되지 않아 놓친 작업들을 실행하지 않는 것은 의도된 것으로, 예약된 시간에 예약한 job이 실행되도록 하려면 해당 시간에 run_pending이 실행되도록 설정해야 한다.

참고로 schedule 패키지의 공식 문서는 해당 패키지는 간단한 스케쥴링 문제해결을 위해 디자인 된 간단한 라이브러리이기 때문에 다음의 경우에는 사용할 수 없다고 명시하고 있다.

  • Job persistence (remember schedule between restarts)
  • Exact timing (sub-second precision execution)
  • Concurrent execution (multiple threads)
  • Localization (time zones, workdays or holidays)

Reference