본문 바로가기
대동단결 Python

돈키움의 종목정보 실시간 처리

by 즐거운 지니 2020. 9. 24.
반응형

OpenAPI에서 실시간 처리는 SetRealReg(), 또는 CommKwRqData() 를 통해 가능하다. 일단 위 함수들을 통해 실시간 종목을 등록하면 다시 해지하기 전까지 서버에서 종목의 정보(현재가 등)가 변할 때 마다 그 정보를 실시간으로 보내주는데 이는 요청-응답의 다른 통신체계와 다르다.

실시간 이벤트가 뜰 때 마다 콜백함수를 통해 실시간으로 반영하다 보면 때때로 프로그램이 느려지게 되는데 특히 장 초반에는 거의 정지하다시피 느려진다. 장 초반에 엄청난 거래량이 형성되고 이 데이터가 실시간으로 오다보니 느려지는 건데 사실 이 때가 가장 중요한 시간이고 프로그램에서도 할 일 이 가장 많다. 엄청난 실시간 데이터를 무릅쓰고 해야 할 일을 원활히 해야 하는데 이 문제를 어떻게 해결 할 까?

일단, 실시간 이벤트 콜백함수에서의 작업량을 최대한 줄이는 방법으로 접근해 보자. 이를 위해 다음과 같이 코딩한다.

  • 주 메뉴에서는 각 윈도우마다 실시간 체크메뉴를 두어 유저가 실시간을 활성 및 비활성 할 수 있도록 한다. 
  • 실시간종목 클래스를 두어 실시간 종목 별도 관리
  • 등록 메소드에서 체크메뉴의 상태를 읽고 그에 따라 각 윈도우에서 종목을 읽어 실시간 등록한다. 
  • 실시간 이벤트가 발생하면 콜백함수에서 종목정보 데이터를 별도 저장해 둔다.
  • 인터벌을 두어 각 윈도우의 데이터를 갱신한다.
반응형

댓글