[scheduler] APSscheduler (Advanced Python Scheduler)

이상해씨·2023년 8월 17일
0

APSscheduler (Advanced Python Scheduler)

  • 분산 작업 담당하는 스케쥴러
  • python application 에서 주기적으로 작업을 예약 및 실행
  • 쉽고 작은 규모 작업에 사용

기본 개념

1. triggers 🍀 : 작업 시기를 정의. 다양한 트리거 지원
2. job stores : 예약된 작업 상태 저장 및 관리하는 저장소
3. executors : 실제 작업 실행 관리. 스레스나 프로세스 풀을 통해 수행. 스케쥴러에게 작업완료를 알리고, 적절한 이벤트 전송
4. schedulers 🌷 : 스케쥴링된 작업들을 관리 및 실행.

🍀 1. 실행 방식과 트리거 종류

실행방식

  • Cron : cron 표현
  • Interval: 일정주기
  • Date: 특정 날짜를 기준으로 실행(Cron과 흡사)

    📌 cron 표현
    리눅스(Linux)와 유닉스(Unix) 계열 OS에서 작업 스케쥴링을 위해 사용되는 시간표현 방식

트리거 종류

  • CronTrigger : cron 표현식 사용
  • DateTrigger : 단일 실행
  • IntervalTrigger : 반복실행

🌷 4. 스케쥴러 종류

  • BlockingScheduler : 단일 스케쥴러. 애플리케이션의 메인 스레드에서 실행.
  • BackgroundScheduler : 다중 스케쥴러. 가장 일반적으로 사용. 백그라운드 스레드로 실행됨.
  • AsyncIOScheduler
  • GeventScheduler
  • TornadoScheduler
  • TwistedScheduler
  • QtScheduler

간단한 사용법

1. 설치

pip install apscheduler

2. 스케쥴러 생성

scheduler =BackgroundScheduler()

3. 트리거 설정

  • 문법
scheduler.add_job(<함수>, <트리거 실행방식>, <시간조건>)
  • 예시
# 작업을 5초마다 실행하는 트리거 설정
scheduler.add_job(send_message, 'interval', seconds=5)

4. 스케쥴러 시작

scheduler.start()

try:
    # 작업 실행 시간 동안 프로그램 유지
    while True:
        time.sleep(1)
except (KeyboardInterrupt, SystemExit):
    # Ctrl+C 등 종료 시 스케줄러 중지
    scheduler.shutdown()
from apscheduler.schedulers.background import BackgroundScheduler
import time

# 스케줄링할 작업 함수
def send_message():
    print("Hello, APScheduler!")

# 백그라운드 스케줄러 생성
scheduler = BackgroundScheduler()

# 작업을 5초마다 실행하는 트리거 설정
scheduler.add_job(send_message, 'interval', seconds=5)

# 스케줄러 시작
scheduler.start()

try:
    # 작업 실행 시간 동안 프로그램 유지
    while True:
        time.sleep(1)
except (KeyboardInterrupt, SystemExit):
    # Ctrl+C 등 종료 시 스케줄러 중지
    scheduler.shutdown()

참고

profile
공부에는 끝이 없다

0개의 댓글