반응형
목표
- flask-app 실행 후 Cybos-Subscribe 시작, event 수신 데이터 받기
문제
- Subscribe 프로세스를 계속 유지하지 않으면 실시간 데이터를 받을 수 없음
행동
- pump기능을 그대로 적용하여 무한 루프를 돌리고, 대신 스레드를 나누기로 함
- 파이썬은 단일 스레드이기 때문에 threading 을 사용하여 스레드를 분리함
결과
- 스레드를 분리하니 event 수신 데이터는 지속적으로 받으면서도 다른 api 요청이 가능해짐
# router.py
import threading
import BidAsk, start_subscribe
@app.route("/")
def start():
# 서브 스레드에서 COM 객체를 사용하려면 COM 라이브러리를 초기화 해야함
pythoncom.CoInitialize()
# threading을 이용하여 타겟 함수를 준비
thread = threading.Thread(target=start_subscribe, args=BidAsk)
# 타겟 함수를 실행하려면 start() 매서드를 사용해야함
thread.start()
return jsonify("ok"), 200
# Shell Terminal
# count는 1초마다 1씩 추가되는 무힌루프를 설정하였다.
# 무한루프가 작동 중임에도 추가 요청이 정상적으로 작동되는 것을 볼 수 있다.
count : 224
count : 225
count : 226
127.0.0.1 - - [11/Jan/2022 17:24:33] "DELETE /subscribe/A000000 HTTP/1.1" 200 -
127.0.0.1 - - [11/Jan/2022 17:24:33] "DELETE /subscribe/A000000 HTTP/1.1" 400 -
count : 227
count : 228
Subscribe 시작 : A000000
127.0.0.1 - - [11/Jan/2022 17:24:35] "GET /subscribe/A000000 HTTP/1.1" 200 -
127.0.0.1 - - [11/Jan/2022 17:24:35] "GET /subscribe/A000000 HTTP/1.1" 400 -
앞으로
- 자기 확신을 위해 코딩할 때, ‘동작 원리’를 이해하는 것에 초점을 맞출 것
- ‘된다’, ‘안된다’에 초점을 맞추면 아무것도 모르는 상태로 해매기만 함
레퍼런스
반응형
'Log > Today' 카테고리의 다른 글
apscheduler를 활용한 예약 실행 성공 (0) | 2022.01.18 |
---|---|
메모리, csv, DB입력, 그리고 데이터 반환 (0) | 2022.01.17 |
파일 시스템으로 DB 인서트 하는 중 (0) | 2022.01.14 |
threading 왜 되는 걸까? PumpMessages가 뭐길래? (0) | 2022.01.13 |
Flask로 Subscribe데이터 받기 실패 (0) | 2022.01.10 |