Giter Club home page Giter Club logo

Comments (6)

elbakramer avatar elbakramer commented on August 25, 2024

서버가 응답이 없어지는게, 위의 스크립트가 중간에 멈추는식인가요?

제가 따로 돌여봤을때 뭔가 스크립트가 다 돌긴 해서요.
실제 데이터가 들어오는지 관련해서는 아직 장시간동안 테스트는 못해봤습니다.

별개로 제가 저번 이슈에서도 놓친게 있는데, GetRealDataForCodesAsStream() 함수 호출시에 3번째 인자가 (스크립트의 realtype) 값이 문자열로 0 또는 1 이 들어가야 하는데, 스크립트에서는 주식시세 가 들어가고 있어서 하단에서 함수를 잘못 호출되고 있는 것 같습니다. 혹시 이 때문은 아닐까요?

구체적으로 KOAStudio 에서 설명하는 함수들 중에 SetRealReg() 함수의 strOptType 값에 해당하는 부분입니다.

SetRealReg(
BSTR strScreenNo,   // 화면번호
BSTR strCodeList,   // 종목코드 리스트
BSTR strFidList,  // 실시간 FID리스트
BSTR strOptType   // 실시간 등록 타입, 0또는 1
)

인자명이 혼동을 줄 여지가 있는거 같아서 추후 opt_type 같은걸로 바꿔야 할거 같긴 하네요.

from koapy.

thesoomyung avatar thesoomyung commented on August 25, 2024

서버응답이 없어지는 현상은 real.py 스크립트가 중간에 멈추는 식이 아니고,
"koapy serve" 를 띄워둔 서버 터미널이 멈춘다는 뜻입니다.
클라이언트를 띄워둔 터미널은 멈추진 않습니다. real.py 스크립트는 서버가 멈춘것과 관계없이 끝까지 수행은 됩니다. 로직자체가 워낙 간단하고 멈출만한 구간이 없기때문이죠.

아 그리고, 제가 인자를 잘못주고 있었는지 몰랐습니다;;;
realtype 에는 "주식시세"가 아니라 "0" 또는 "1"을 줘야 하는데 미쳐 파악못했습니다.

하지만 "0"으로 제대로 줘도 이슈는 여전히 발생하는것 같습니다. 거의 100%입니다.
시장 개장 후 real data가 실제로 수신될때 재현되는 것 같습니다. real data가 수신되지 않는 장 종료상황에서는
gRPC 서버가 멈추는 현상 나타나지 않습니다. 스크립트 역시 물론 원활히 돌고요.
서버가 죽고나면 클라이언트에서 다시 연결시도를 해봐도 서버에서 응답이 없어서 연결되지 않습니다.

감사합니다.

from koapy.

elbakramer avatar elbakramer commented on August 25, 2024

현상 확인했고 문제되는 부분도 특정은 했습니다만, 구체적인 해결방안은 아직 찾지 못했습니다.
여전히 SetRealRemove() 쪽이 문제인거 같네요. 해당 부분을 주석처리하면 적어도 서버쪽이 죽진 않습니다.

만약에 하나의 화면번호에서 실시간이벤트를 부분적으로 추가/제거하는 사용패턴이 필요없으시면
임시로 이렇게 사용해주셔도 될 거 같아요.

for code in code_list:
self.add_callback(self.control.SetRealRemove, screen_no, code)

제가 테스트 할때는 두번째 코드 005930 (삼성전자) 가 추가되고 나서부터 해제시에 서버가 멈추네요.

이걸 첫번째로 순서를 바꿔서 돌려봤더니 첫번째 이터레이션 이후 해제과정에서 바로 멈춰버리는거로 봐서,
추측하기로 해당 종목이 실시간 이벤트가 상대적으로 빈번하게 발생하는게 영향이 있어보입니다.

아마도 OnReceiveRealData() 이벤트 콜백에서 무언가가 처리되는 와중에 SetRealRemove() 로 실시간 등록을 해제하는게 뭔가 충돌을 일으키지 않나 추측하고 있고요. 둘 사이에 호출 타이밍을 어떻게 맞춰보면 해결될까 싶은데 관련해서 아직 시도는 못해봤습니다.

from koapy.

elbakramer avatar elbakramer commented on August 25, 2024

0.5.0 버전으로 한번 테스트 부탁드립니다.

내부적으로 SetRealRemove() 함수가 어떨때 프로그램을 죽이는지 이것저것 실험을 해봤는데요.
현재는 대략 아래정도로 파악하고 있습니다.

  1. 실시간 데이터가 거의 들어오지 않을때 호출=> 문제없음
  2. 실시간 데이터가 들어오고 실시간 데이터 이벤트 처리함수 내에서 호출 => 문제없음
  3. 실시간 데이터가 막 들어오는 와중에 이벤트 처리함수들 전후로 호출 (추정) => 이슈발생
  4. SetRealReg(..., "ALL") 이나 DisconnectRealData(...) 호출 => 문제없음

일단 근본적인 문제나 사용법 같은건 키움쪽에 따로 문의를 해봐야겠지만요.
일단은 2번의 경우에 문제가 발생하진 않는걸 발견해서 2번쪽으로 우회하도록 수정해놓은 상태입니다.

from koapy.

thesoomyung avatar thesoomyung commented on August 25, 2024

안녕하세요,
0.5.1 버전으로 문제 해결되는 것 확인했습니다.
다만, 실시간 데이터 수신과 반복적인 계좌조회가 multi thread 로 돌아가면 gRPC서버가 멈추는 현상을 발견했는데
이것은 문제 재현방법이 이 이슈와 다르므로 별도의 이슈로 등록을 하겠습니다.

감사합니다.

from koapy.

elbakramer avatar elbakramer commented on August 25, 2024

0.5.1 버전으로 해결되어서 이슈 닫습니다.

from koapy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.