[Python] 일정한 주기나 특정 시간에 코드 실행시키기: Apscheduler
2022. 8. 29. 08:18ㆍBack-end/Python
반응형
Apscheduler
- 일정한 주기마다 실행되어야 하는 코드를 예약할 수 있는 Python 기반 스케쥴링 라이브러리입니다.
- 데몬이 아니며 앱 내부에서 실행됩니다.
- BlockingScheduler: 하나의 프로세스에서만 동작하며 스케쥴링 된 작업이 실행될때 다른 작업은 일시중단됩니다.
- BackgroundScheduler: 백그라운드에서 동작하며 스케쥴링 된 작업이 실행될때 다른 작업도 할 수 있습니다.
Apscheduler 설치하기
터미널을 키고 다음을 입력합니다.
pip install apscheduler
Apscheduler 사용하기: BackgroundScheduler
BackgroundScheduler 객체를 초기화하고 그 객체의 add_job()를 실행해서 작업을 예약합나다.
1. 특정 시간에 주기적으로 작업 실행
add_job()의 parameter로 'cron'을 넘겨주어야 합니다. 아침 8시에 say()가 실행됩니다.
from apscheduler.schedulers.background import BackgroundScheduler
if __name__ == "__main__":
main()
def main():
sched = BackgroundScheduler(timezone='Asia/Seoul') # 시간대 설정
sched.add_job(say, 'cron', hour='8',minute='00', id='test') # 한국시간 아침 8시에 say()가 실행됨
sched.start() #스케쥴링 작업 실행
def say():
print("Hello!")
2. 특정 간격마다 작업 실행
add_job()의 parameter로 'interval'을 넘겨주어야 합니다. 10초 간격으로 say가 실행됩니다.
from apscheduler.schedulers.background import BackgroundScheduler
if __name__ == "__main__":
main()
def main():
sched.add_job(say, 'interval',minute='10', id='test') # 10초 간격으로 say() 실행
sched.start() #스케쥴링 작업 실행
def say():
print("Hello!")
3. 특정 시간에 한번만 작업 실행
add_job()의 parameter로 'date'를 넘겨주어야 합니다. 아침 8시에 say()가 한번만 실행됩니다.
from apscheduler.schedulers.background import BackgroundScheduler
if __name__ == "__main__":
main()
def main():
sched = BackgroundScheduler(timezone='Asia/Seoul') # 시간대 설정
sched.add_job(say, 'date', hour='8',minute='00', id='test') # 한국시간 아침 8시에 say()가 한번만 실행됨
sched.start() #스케쥴링 작업 실행
def say():
print("Hello!")
Apscheduler 사용하기: BlockingScheduler
1,2,3번 모두 BlockingScheduler로도 구현이 가능합니다.
from apscheduler.schedulers.background import BlockingScheduler
if __name__ == "__main__":
main()
def main():
sched = BlockingScheduler(timezone='Asia/Seoul') # 시간대 설정
sched.add_job(say, 'cron', hour='8',minute='00', id='test') # 한국시간 아침 8시에 say()가 실행됨
sched.start() #스케쥴링 작업 실행
def say():
print("Hello!")
아침 8시에 주기적으로 say()를 실행하지만 BlockingScheduler이기 때문에 sched.start()만 프로세스에서 실행되며 그 이후의 코드들은 실행되지 않습니다.
반응형
'Back-end > Python' 카테고리의 다른 글
[Python] 동적 웹사이트를 크롤링하기: Selenium (0) | 2022.10.04 |
---|---|
[Python] JSON 객체와 Dictionary/List/Tuple를 변환하기: 인코딩 및 디코딩 (0) | 2022.08.19 |