일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 항해99
- JPA
- hanghae99
- Spring Security
- real time web
- Java
- html
- jenkins
- oauth
- Stream
- flask
- web
- jQuery
- Project
- bean
- session
- Anolog
- cookie
- JWT
- javascript
- DI
- server send event
- google oauth
- WIL
- spring
- python
- 생명주기 콜백
- programmers
- SseEmitter
- Hibernate
Archives
- Today
- Total
끄적끄적 코딩일지
[python] APScheduler 사용하기 본문
크롤링을 사용하여 데이터를 긁어오다가
정기적으로 데이터를 업데이트 해주어야 하는 문제가 생겼다.
어떻게 정기적 이라는 조건을 해결할까 생각해 보다가
예전 spring을 공부할때 scheduler개념이 생각났다.
혹시 flask에서도 scheduler을 실행시킬수 있지 않을까 찾아보니....
오! 있다!!
무려 scheduler와 APScheduler 라는 라이브러리가 있단다.
두개의 차이점은 APScheduler는 background에서도 실행을 할수 있고
실행주기 지정을 cron, date,interval등 다양한 방식으로 실행 주기를 지정할 수 있다.
기왕이면 좋은게 좋다고 APScheduler 를 사용해 보도록 하자
일단 모듈부터 설치하고
pip install APScheduler
이어서 코드 작성
from apscheduler.schedulers.background import BackgroundScheduler
# deamon = True 속성을 주어 메인 프로세스가 종료되면 같이 종료되도록 함으로써
# background에서 계속 돌아가는걸 방지하도록 하자
sched = BackgroundScheduler(daemon=True)
# 매일 0시 0분 반복
@sched.scheduled_job('cron', hour='0',minuite='0',id='프로세스 id 넣을것')
def job():
....
# 스케줄러 시작
sched.start()
그럼 추가로 cron ,date interval등 돌아가는 시간을 어떻게 지정하는지 알아보자
# 특정 시간에 반복
# 매일, 매 시 5분에 반복
@sched.scheduled_job('cron',minuite='5',id='프로세스 id 넣을것')
...
# 매일, 매 시 5분마다 반복
@sched.scheduled_job('cron',minuite='*/5',id='프로세스 id 넣을것')
...
# 매일, 1시간 마다 반복
@sched.scheduled_job('cron',hour='*/1',minuite='0' ,id='프로세스 id 넣을것')
...
더 자세한 사항은 아래 링크를 확인하면 볼 수 있다.
http://apscheduler.readthedocs.io/en/3.0/modules/triggers/cron.html#module-apscheduler.triggers.cron
'Python' 카테고리의 다른 글
flask 에서 Cookie , Session Storage를 활용해 보자 (0) | 2022.05.12 |
---|---|
Jinja2를 사용해서 페이지를 만들어보자 (0) | 2022.05.11 |
BeautifulSoup + Selenium을 이용한 동적 페이지 크롤링 (0) | 2022.05.10 |
Flask 사용하기 (0) | 2022.03.24 |
MongoDB 시작하기 (0) | 2022.03.23 |