1. Python APScheduler
from apscheduler.schedulers.background import BackgroundScheduler
sched = BackgroundScheduler()
sched.add_job(메소드명, 'cron', day_of_week='mon-fri', hour='16', id='renew_index')
sched.start()
while True:
time.sleep(1)
- 내 프로젝트의 경우 지속적으로 백그라운드에서 스케줄링하므로 BackgroundScheduler 사용
- BlockScheduler도 있음
- 어떤 작업을 할지는 add_job()에 메소드 명을 넣거나, 아래와 같이 메소드 위에 어노테이션 붙이기
- cron 형식으로 날짜나 요일, 시간 설정함
@sched.scheduled_job('cron', day_of_week='mon-fri', hour='15', minute='35', id='renew_chart')
def renew_chart():
2. 실수...
db에 주식 데이터를 대량으로 넣는데, 테스트하지 않고 처음부터 자신감있게 코드를 다 짜고 넣으니 세세하게 잘못된 부분을 이미 많이 넣고서야 중간에 계속 알아차리기를 3번이나 반복했다. 처음부터 잘 세팅해놓고 넣었으면 이미 끝났을 것을 한시간을 버린 셈이 되었다...
자신있어도 무조건 스텝을 밟아나가야 함을 다시 깨달았다..
몽고 db에 날짜별로 컬럼을 두어서 주식 데이터를 세팅했었는데, 당연하게도 스프링에서 매핑하는 컬럼을 그 날짜 수 만큼 정의해야하는 것 같아서, 한 컬럼에 이중리스트 형식으로 다 담는 것으로 바꾸었다.
3. SSE
실시간 주식데이터는 SSE로 하면 최적이겠다 싶어서 살짝 공부해봤다.
메인 app.py에서 flask로 announcer 클래스 정의, 메세지 형식 메소드 정의, 메세지 listen 및 send 하는 루트 만들어주고
listen.py에서 sseclient에 있는 메세지를 print하는 구조이다. flask 서버 돌리고, listen.py도 돌리면서 send하는 루트에 get 요청 보낼때마다 미리 지정한 메세지가 출력된다. 신기하긴했는데, 프로젝트에 어떻게 적용시킬지는 아직 멀은 것 같다.
'이노베이션 캠프' 카테고리의 다른 글
[TIL] 78일차 (0) | 2022.10.20 |
---|---|
[TIL] 68일차 (0) | 2022.10.10 |
[TIL] 60일차 (0) | 2022.09.29 |
[TIL] 53일차 (1) | 2022.09.23 |
[WIL] 7주차 (1) | 2022.09.19 |