- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
- kivy (python)
Python 일반 파이썬 스크립트 스케줄링하기
2020.07.26 20:36
파이썬 스크립트 스케줄링하기
APScheduler, Cron으로 파이썬 스크립트를 스케줄링해봅시다

최근에 파이썬으로 작성된 스크립트를 스케줄링 해야하는 일이 있었습니다. 그 때 알아보게 된 두가지 방법을 공유해보고자 합니다.
APScheduler
Advanced Python Scheduler의 약자로, Python 스크립트를 주기적으로 실행할 수 있게 해주는 스케줄링 Library중 하나입니다. 데몬이나 서비스가 아닌 실행하는 Python Application 내에서 동작합니다.
설치
pip 를 이용해 설치합니다.
$ pip install apscheduler
사용
Python 코드 내에 작업을 예약하는 코드를 작성합니다. 제공하는 Scheduler는 다음과 같습니다.
BlockingScheduler: 하나의 프로세스가 돌아가야할 때 사용합니다.BackgroundScheduler: 프레임워크에 종속되어 돌아가야하지 않거나 Background에서 돌아가야할 때 사용합니다.AsyncIOScheduler:AsyncIO모듈을 사용한 앱을 스케줄링할 때 사용합니다.GeventScheduler:Gevent를 사용한 앱을 스케줄링할 때 사용합니다.TornadoScheduler: use if you’re building a Tornado applicationTwistedScheduler: use if you’re building a Twisted applicationQtScheduler: use if you’re building a Qt application
add_job()메소드 혹은 scheduled_job()데코레이터를 사용해 작업을 예약한 뒤, start()메소드로 스케줄링을 시작합니다.
예약 방식은 add_job()혹은 scheduled_job()의 인자로 다음과 같이 선택 가능합니다.
자세한 내용은 https://apscheduler.readthedocs.io/en/latest/userguide.html에서 확인할 수 있습니다.
예제
from apscheduler.schedulers.blocking import BlockingScheduler# 실행할 함수 def exec_interval(): print('exec interval')def exec_cron(): print('exec cron')sched = BlockingScheduler()# 예약방식 interval로 설정, 10초마다 한번 실행 sched.add_job(exec_interval, 'interval', seconds=10)# 예약방식 cron으로 설정, 각 5배수 분의 10, 30초마다 실행 # ex) (5분 10, 30초), (10분 10, 30초), (15분 10, 30초) sched.add_job(exec_cron, 'cron', minute='*/5', second='10, 30')# 스케줄링 시작 sched.start()
Cron
Cron은 특정 시간에 명령어가 수행될 수 있도록 예약해주는 리눅스용 작업 Scheduler입니다. Daemon으로 동작하며 Crontab(Cron table)형식의 예약 스크립트를 작성하도록 되어 있습니다.
설치
각 OS의 패키지 매니저를 통해 설치합니다.
$ apt-get install -y cron
사용
crontab 의 몇가지 옵션을 이용하여 Crontab를 관리합니다.
-e: Edit, 예약 스크립트를 수정합니다.-l: List, 예약된 스크립트 목록을 출력합니다.-r: Reset, 예약된 스크립트를 초기화합니다.
옵션 -e 로 실행하면 예약 스크립트를 수정할 수 있는 에디터가 실행됩니다. 예약 스크립트 형식은 다음과 같습니다.
[분] [시] [일] [월] [요일] [실행할 명령어]
예제
# 월 ~ 금요일 10시 30분에 test.py 실행 30 10 * * 1-5 python /home/norr/test.py# 매월 15일에 10분마다 scan.py 실행 */10 * 15 * * python /home/norr/scan.py
Host의 Timezone을 기준으로 실행됩니다.
이렇게 제가 사용했던 두가지 방식을 소개해보았습니다.
이 글이 파이썬 스케줄링에 어려움을 겪는 분들께 조금이나마 도움이 되었으면 좋겠습니다. 감사합니다!
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 8 |
[python, 그래픽] [파이썬 활용] 마우스 자동화 (pyautogui)
| 졸리운_곰 | 2022.11.26 | 437 |
| 7 |
[python, 그래픽] 파이썬 자동화 툴 - pyautogui 사용하기
| 졸리운_곰 | 2022.11.26 | 568 |
| 6 |
[python][image processing][파이썬][이미지프로세싱] 파이썬 영상 처리 (OpenCV)
| 졸리운_곰 | 2021.11.12 | 629 |
| 5 |
[Python, GUI tool] GUI drag & drop style GUI Builder for Python Tkinter
| 졸리운_곰 | 2021.05.17 | 613 |
| 4 |
[python 파이썬 2d 그래픽스] The Interesting Python Graphics Libraries for Python Programmers
| 졸리운_곰 | 2021.04.27 | 1227 |
| 3 | 파이선 텍스트 게임 샘플 Code for my First Text-Based Game | 졸리운_곰 | 2018.09.01 | 745 |
| 2 |
python Collada dae file Reading : 파이썬으로 콜라다 dae 파일 분석
| 졸리운_곰 | 2017.08.01 | 1064 |
| 1 |
matplotlib으로 하트 그리기
| 졸리운_곰 | 2017.03.04 | 2278 |

