Python Scheduler
파이썬 스케줄러
- 특정 주기를 기준으로 반복 동작하는 프로그램을 스케줄러라 부른다.
- 파이썬으로 손쉽게 스케줄러를 구현할 수 있게 하는 모듈 혹은 오픈소스 라이브러리들에는 아래와 같은 것들이 있다.
- sched (Python Built-In Library)
- APScheduler (Open Source)
- celery (Open Source)
- apache-airflow (Open Source)
sched Module
- Python Built-in Library로, 단순하고 직관적이다.
- 복잡한 스케줄러 구현에는 한계를 보인다.
APScheduler (URL)
- 비교적 사용법이 간단하여 손쉽게 스케줄러를 구현할 수 있다.
- 실행하는 Job에 대한 정보를 저장하고 복원하는 다양한 Back-End(저장소)를 지원한다.
Installing APScheduler
$ pip install apscheduler
APScheduler Scheduler Types (스케줄러 형태)
- APScheduler는 파이썬의 다른 프레임워크와 잘 융합되도록 여러 형태의 스케줄러를 아래와 같이 제공하고 있다.
Scheduler Types | Description |
BlockingScheduler | - 단독 프로세스로 동작하는 스케줄러 구현에 사용된다. |
BackgroundScheduler | - 다른 프레임워크와 상관없이 백그라운드에서 동작하는 스케줄러 구현에 사용된다. |
AsyncIOScheduler | - asyncio 모듈을 사용하는 Application을 위한 스케줄러 구현에 사용된다. |
GeventScheduler | - gevent Application을 위한 스케줄러 구현에 사용된다. |
TornadoScheduler | - Tornado Application을 위한 스케줄러 구현에 사용된다. |
TwistedScheduler | - Twisted Application을 위한 스케줄러 구현에 사용된다. |
QtScheduler | - Qt Application을 위한 스케줄러 구현에 사용된다. |
apscheduler.triggers.cron
* cron Job Scheduler (cron 스케줄러) (URL)
- Unix 계열 OS의 시간 기반 Job Scheduler S/W Utility이다.
- 소프트웨어 환경을 설정 및 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행하도록 스케줄링 하기 위해 cron을 사용한다.
celery
- 작업 큐를 통해 동작하는 방식으로, 복잡한 제어를 수행할 수 있다.
- 분산형으로 동작할 수 있어 시스템이 많은 노드를 갖고 있는 경우에 유리한 프레임워크이다.
- 스케줄러 관리에 필요한 화면을 웹으로 제공하고 있다.
apache-airflow
- 작업 흐름을 설계하고 스케줄링 및 모니터링 기능까지 제공하고 있다.
- 분산형으로 동작할 수 있어 시스템이 많은 노드를 갖고 있는 경우에 유리한 프레임워크이다.
- 스케줄러 관리에 필요한 화면을 웹으로 제공하고 있다.
Reference: 파이썬과 리액트를 활용한 주식 자동 거래 시스템 구축
(박재현 저, 위키북스, 2020)