- 전체
- 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
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 10 |
[python, tkinter] [python/GUI] tkinter 로 GUI 만들기(기초예제, 단위 변환기 만들기)
| 졸리운_곰 | 2023.03.07 | 326 |
| 9 |
Rapyd-Tk : An open-source application development environment for Python/Tkinter
| 졸리운_곰 | 2017.01.07 | 1440 |
| 8 |
Tkinter로 하는 GUI 프로그래밍
| 졸리운_곰 | 2015.05.12 | 1628 |
| 7 | python 2.X 와 python 3.X 의 tkinter 코드 호환 유지 기법 : from Tkinter import * 에러시 | 졸리운_곰 | 2014.11.03 | 1767 |
| 6 | Tkinter Summary [Tkinter 요약] | 졸리운_곰 | 2014.10.14 | 3203 |
| 5 | An Introduction To Tkinter TkInter에 대한 소개 | 졸리운_곰 | 2014.10.14 | 2649 |
| 4 |
tkinter_nmt.pdf
| 졸리운_곰 | 2014.10.14 | 6234 |
| 3 |
tkinter.pdf
| 졸리운_곰 | 2014.10.14 | 6858 |
| 2 |
tkinter-python-intro.pdf
| 졸리운_곰 | 2014.10.14 | 7646 |
| 1 |
python-and-tkinter-programming.pdf
| 졸리운_곰 | 2014.10.14 | 7918 |

