반응형
OpenAPI에서 실시간 처리는 SetRealReg(), 또는 CommKwRqData() 를 통해 가능하다. 일단 위 함수들을 통해 실시간 종목을 등록하면 다시 해지하기 전까지 서버에서 종목의 정보(현재가 등)가 변할 때 마다 그 정보를 실시간으로 보내주는데 이는 요청-응답의 다른 통신체계와 다르다.
실시간 이벤트가 뜰 때 마다 콜백함수를 통해 실시간으로 반영하다 보면 때때로 프로그램이 느려지게 되는데 특히 장 초반에는 거의 정지하다시피 느려진다. 장 초반에 엄청난 거래량이 형성되고 이 데이터가 실시간으로 오다보니 느려지는 건데 사실 이 때가 가장 중요한 시간이고 프로그램에서도 할 일 이 가장 많다. 엄청난 실시간 데이터를 무릅쓰고 해야 할 일을 원활히 해야 하는데 이 문제를 어떻게 해결 할 까?
일단, 실시간 이벤트 콜백함수에서의 작업량을 최대한 줄이는 방법으로 접근해 보자. 이를 위해 다음과 같이 코딩한다.
- 주 메뉴에서는 각 윈도우마다 실시간 체크메뉴를 두어 유저가 실시간을 활성 및 비활성 할 수 있도록 한다.
- 실시간종목 클래스를 두어 실시간 종목 별도 관리
- 등록 메소드에서 체크메뉴의 상태를 읽고 그에 따라 각 윈도우에서 종목을 읽어 실시간 등록한다.
- 실시간 이벤트가 발생하면 콜백함수에서 종목정보 데이터를 별도 저장해 둔다.
- 인터벌을 두어 각 윈도우의 데이터를 갱신한다.
반응형
'대동단결 Python' 카테고리의 다른 글
R에서 만든 보고서를 티스토리에 자동으로 올리는 Python (0) | 2020.12.26 |
---|---|
티스토리 OpenAPI 사용하기 (0) | 2020.12.13 |
OpenAPI, TR 수신 이벤트가 뜨지 않는다. (0) | 2020.09.12 |
돈키움에서 TR 과 이벤트처리 (0) | 2020.09.12 |
스크립트언어 파이썬에서 변수 유효범위 및 접근범위 (0) | 2020.07.12 |
댓글