25. Python schedule로 정기 작업 자동화하기

저도 처음에는 정기적인 데이터 수집이나 보고서 발송 프로그램을 정해진 시간마다 실행하기 위해, 매번 시계를 보며 직접 버튼을 누르거나 운영체제의 작업 스케줄러를 뒤적거리곤 했습니다. 하지만 컴퓨터를 바꾸거나 리눅스 서버로 환경이 바뀔 때마다 복잡한 스케줄러 설정을 매번 처음부터 다시 세팅하느라 1~2시간씩 허비하기 일쑤였죠. 배보다 배꼽이 더 크다는 생각이 들던 차에 파이썬의 schedule 라이브러리를 만났습니다. 윈도우든 맥이든 상관없이 단 3줄의 코드로 "10분마다", "매일 오전 9시에" 같은 예약 기능을 완벽하게 제어할 수 있게 되었는데요. 외부 프로그램 도움 없이 VS Code 안에서 개발부터 예약 실행까지 통째로 관리하니 자동화 프로젝트 구축 속도가 몇 배는 빨라졌습니다. 이번 글에서는 schedule 라이브러리의 기본 개념부터 설치 방법, 실전 활용 사례까지 초보자도 쉽게 따라 할 수 있도록 자세히 알아보겠습니다


Python schedule은 python 환경에서 특정 작업을 정해진 시간마다 자동으로 실행할 수 있도록 도와주는 라이브러리입니다. 많은 개발자들이 vscode에서 프로그램을 개발하면서 "매일 오전 9시에 실행", "10분마다 데이터 수집", "매주 월요일 보고서 생성"과 같은 기능을 구현하려고 합니다. 이때 운영체제의 작업 스케줄러를 사용하는 방법도 있지만, Python 코드 안에서 간단하게 스케줄링을 처리하고 싶다면 schedule 라이브러리가 매우 좋은 선택입니다.

복잡한 설정 없이 몇 줄의 코드만으로 자동 실행 기능을 만들 수 있어 입문자부터 실무 개발자까지 폭넓게 활용하고 있습니다.


Python schedule이란 무엇인가

schedule은 특정 함수를 원하는 시간이나 주기에 맞춰 실행하도록 예약하는 라이브러리입니다.

예를 들어 다음과 같은 작업을 자동화할 수 있습니다.

  • 5분마다 주식 데이터 수집
  • 1시간마다 서버 상태 확인
  • 매일 이메일 발송
  • 매주 보고서 생성
  • 특정 시각에 데이터 백업

쉽게 말하면 개인 비서에게 "매일 아침 9시에 이것 좀 해줘"라고 부탁하는 것과 비슷합니다. 사용자가 직접 실행하지 않아도 프로그램이 약속된 시간에 알아서 동작합니다.

또 다른 비유를 하자면 전기밥솥 예약 기능과 같습니다. 잠들기 전에 시간을 맞춰 놓으면 아침에 따뜻한 밥이 완성되어 있듯이, schedule 역시 미리 작업을 예약해 두면 지정된 시간에 자동으로 실행됩니다.


Python schedule 설치하기

schedule 라이브러리 설치

먼저 pip를 이용하여 라이브러리를 설치합니다.

pip install schedule

설치 여부를 확인합니다.

pip show schedule

정상적으로 설치되었다면 버전 정보가 출력됩니다.



vscode에서 schedule 프로젝트 만들기

기본 프로젝트 구조

아래와 같은 간단한 구조로 시작할 수 있습니다.

schedule_project/
│
├── main.py
├── logs/
└── reports/

VSCode에서 프로젝트를 생성한 후 main.py 파일을 작성합니다.


Python schedule 기본 사용법

10초마다 작업 실행하기

가장 간단한 예제입니다.

import schedule
import time

def job():
    print("작업 실행 완료")

schedule.every(10).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

프로그램을 실행하면 10초마다 함수가 자동 실행됩니다.




1분마다 작업 실행하기

import schedule
import time

def collect_data():
    print("데이터 수집 중")

schedule.every(1).minutes.do(collect_data)

while True:
    schedule.run_pending()
    time.sleep(1)

실제 데이터 수집 프로그램에서 자주 사용하는 방식입니다.


매일 특정 시간 실행하기

import schedule
import time

def backup():
    print("백업 시작")

schedule.every().day.at("09:00").do(backup)

while True:
    schedule.run_pending()
    time.sleep(1)

매일 오전 9시에 자동으로 실행됩니다.


Python schedule 실전 활용 사례

주식 데이터 자동 수집

정해진 시간마다 API를 호출하여 시세를 저장할 수 있습니다.

schedule.every(30).minutes.do(collect_stock_data)

장중 데이터 분석 시스템에서 자주 활용됩니다.


웹 크롤링 자동 실행

뉴스나 공지사항을 주기적으로 수집할 수 있습니다.

schedule.every().hour.do(crawl_news)

새로운 게시물이 있는지 자동으로 확인할 수 있습니다.


서버 상태 점검

CPU, 메모리 사용량을 정기적으로 기록합니다.

schedule.every(5).minutes.do(check_server)

문제가 발생하기 전에 이상 징후를 발견할 수 있습니다.


AI 및 LLM 프로젝트

최근에는 AI 프로젝트에서도 많이 사용됩니다.

예를 들어 다음 작업을 자동화할 수 있습니다.

  • 벡터 데이터베이스 업데이트
  • 문서 자동 임베딩
  • 로그 분석
  • 모델 성능 점검
  • 보고서 생성

특히 Python 기반의 자동화 프로젝트에서는 watchdog과 함께 사용하는 경우가 많습니다.



Python schedule 고급 활용법

여러 작업 동시에 등록하기

하나의 프로그램에서 여러 스케줄을 운영할 수 있습니다.

import schedule
import time
from datetime import datetime

hms = "%H:%M:%S"
def task1():
    now = datetime.now()
    print(f"{now.strftime(hms)} 1초 작업")

def task2():
    now = datetime.now()
    print(f"{now.strftime(hms)} 5초 작업")

schedule.every(1).seconds.do(task1)
schedule.every(5).seconds.do(task2)

while True:
    schedule.run_pending()
    time.sleep(1)


특정 요일에만 실행하기

매주 월요일에만 실행하는 예제입니다.

schedule.every().monday.at("08:00").do(task1)

지원 요일은 다음과 같습니다.

  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday

업무용 자동화 프로그램에서 특히 유용합니다.


태그를 활용한 작업 관리

schedule.every().hour.do(task1).tag("report")
schedule.every().day.do(task2).tag("report")

특정 그룹 작업만 제거할 수도 있습니다.

schedule.clear("report")

규모가 커진 프로젝트에서 관리 편의성이 크게 향상됩니다.


Python schedule 사용 시 주의사항

프로그램이 계속 실행되어야 함

schedule은 자체적으로 백그라운드 서비스가 아닙니다.

따라서 아래 루프가 반드시 실행 중이어야 합니다.

while True:
    schedule.run_pending()
    time.sleep(1)

프로그램이 종료되면 예약 작업도 함께 중단됩니다.


장시간 작업은 별도 처리 고려

작업 시간이 긴 경우에는 다음 작업이 지연될 수 있습니다.

예를 들어 1분마다 실행하도록 설정했는데 실제 작업이 3분 걸린다면 스케줄이 밀릴 수 있습니다.

이 경우에는 다음 기술을 함께 사용하는 것이 좋습니다.

  • threading
  • multiprocessing
  • Celery
  • APScheduler

핵심 정리

  • Python schedule은 정기 작업 자동화를 위한 라이브러리입니다.
  • vscode 환경에서 간단하게 자동 실행 프로그램을 만들 수 있습니다.
  • 초 단위, 분 단위, 시간 단위, 요일 단위 예약이 가능합니다.
  • 데이터 수집, 웹 크롤링, 서버 관리, AI 프로젝트에 활용할 수 있습니다.
  • 복잡한 설정 없이 몇 줄의 코드로 자동화 시스템을 구축할 수 있습니다.
  • 프로그램이 종료되면 스케줄도 중단되므로 실행 환경 관리가 중요합니다.

마무리

Python schedule은 자동화 개발을 시작하는 개발자라면 반드시 알아두어야 할 라이브러리 중 하나입니다. 복잡한 스케줄링 시스템을 구축하지 않아도 간단한 코드만으로 반복 작업을 자동화할 수 있으며, 데이터 수집부터 서버 관리, AI 프로젝트 운영까지 폭넓게 활용할 수 있습니다. 특히 vscode 환경에서 개발하면서 정기적으로 실행해야 하는 작업이 있다면 schedule을 적용해 보시기 바랍니다. 반복 업무를 사람이 직접 수행하는 대신 프로그램이 처리하게 되면 개발 생산성과 안정성이 크게 향상됩니다.


댓글

이 블로그의 인기 게시물

1.Python 설치부터 실행까지 10분 만에 끝내기 — 초보자도 바로 따라 하는 완벽 가이드

30.Python pyautogui로 마우스와 키보드 자동화하기: VSCode 실전 가이드

29.Python subprocess로 외부 명령어 실행하기: VSCode 실전 활용법