Ch.1 Python 라이브러리 15선
schedule — 정해진 시간에 자동 실행
매일 아침 9시에 자동으로 실행되면 좋겠는데
매일 환율을 확인하고 엑셀에 기록하는 작업을 합니다. 매번 9시에 알람 맞춰놓고 수동으로 하고 있습니다.
사람이 매일 챙기지 않아도 자동으로 돌아가게 할 수 없을까?
schedule을 쓰면 됩니다. '매일 9시', '10분마다' 같은 예약을 Python 코드 한 줄로 설정합니다.
핵심 내용
schedule은 정해진 시간에 함수를 자동 실행하는 예약 라이브러리입니다. '매일 9시', '30분마다', '매주 월요일' 같은 스케줄을 코드 한 줄로 설정합니다.
한 줄 요약: Python 전용 알람 시계 — 시간이 되면 코드를 자동 실행 실생활 비유: 스마트폰 알람 앱처럼, 지정한 시간이 되면 알아서 함수를 호출합니다. 다만 소리 대신 코드가 실행됩니다.
매일 반복되는 작업을 사람 없이 자동으로 돌리고 싶을 때 씁니다.
수동으로 하면: 알람 맞추기 → 9시에 PC 앞 착석 → 스크립트 실행 → 매일 반복 → 주말에도 출근
schedule 쓰면: schedule.every().day.at('09:00') → 한 번 세팅 → 평생 자동 실행
설치하고, 10초마다 메시지를 출력하는 스케줄러를 만들어 봅시다.
pip install scheduleimport schedule
import time
def morning_report():
print("좋은 아침! 오늘의 리포트를 생성합니다.")
schedule.every(10).seconds.do(morning_report)
print("스케줄러 시작! (Ctrl+C로 종료)")
while True:
schedule.run_pending()
time.sleep(1)실행하면 10초마다 '좋은 아침!' 메시지가 출력됩니다. 실제 사용할 때는 .every(10).seconds 대신 .every().day.at('09:00')처럼 바꾸면 됩니다.
AI에게 스케줄러를 만들어 달라고 할 때, 실행 주기 + 할 일 + 결과 저장 방식을 구체적으로 말하세요.
좋은 프롬프트 예시: "schedule로 매일 오전 9시 환율 API 호출해서 엑셀에 추가하는 자동화 만들어줘. requests로 API 호출하고 openpyxl로 저장"
프롬프트 변형: "30분마다 실행하는 서버 헬스체크도 추가하고, 응답이 없으면 콘솔에 경고 메시지 출력해줘"
import schedule
import time
from datetime import datetime
def check_exchange_rate():
now = datetime.now().strftime("%Y-%m-%d %H:%M")
print(f"[{now}] 환율 조회 중...")
# requests.get("https://api.exchangerate.host/latest")
print("USD/KRW: 1,350원 (예시)")
def health_check():
print("서버 상태 확인 중... OK")
schedule.every().day.at("09:00").do(check_exchange_rate)
schedule.every(30).minutes.do(health_check)
print("스케줄러 가동!")
while True:
schedule.run_pending()
time.sleep(1)미니 프로젝트: 서버 상태 모니터링 봇 30분마다 서버 응답을 확인하고, 결과를 로그 파일에 기록합니다.
import schedule
import time
import requests
from datetime import datetime
SERVERS = [
{"name": "메인 사이트", "url": "https://example.com"},
{"name": "API 서버", "url": "https://api.example.com/health"},
]
def check_servers():
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
for server in SERVERS:
try:
r = requests.get(server["url"], timeout=5)
status = "OK" if r.status_code == 200 else f"ERROR ({r.status_code})"
except:
status = "DOWN"
log = f"[{now}] {server['name']}: {status}"
print(log)
with open("server_log.txt", "a") as f:
f.write(log + "\n")
schedule.every(30).minutes.do(check_servers)
print("모니터링 봇 시작!")
check_servers() # 시작 시 즉시 1회 실행
while True:
schedule.run_pending()
time.sleep(1)실행 방법: monitor.py로 저장 → python monitor.py 실행 → 30분마다 서버 상태를 확인하고 server_log.txt에 기록합니다. 터미널을 켜 놓으면 계속 돌아갑니다.
핵심 용어
환율/주가 기록
매일 오전 9시 API 호출 → 엑셀에 자동 추가
데이터 백업
매일 자정 DB 데이터를 파일로 백업
서버 상태 확인
30분마다 서버 응답 체크 → 장애 시 알림
핵심 정리
- 1schedule은 Python 예약 실행 라이브러리 — '매일 9시', '30분마다'를 코드 한 줄로 설정
- 2every().day.at('09:00'), every(30).minutes 등 직관적인 문법
- 3while True + run_pending() 루프로 스케줄러가 계속 동작한다
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작