Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ws_commodity_future.py 실행 시 timeout 발생 이슈 문의. #32

Open
KangDaehern opened this issue Dec 19, 2023 · 4 comments
Open

Comments

@KangDaehern
Copy link

  • 문제 내용

    1. 해당 코드 실행 시 현재 100% time out error 가 발생하고 있습니다.
      해당 이슈 관련 짚이는 사항 같은게 있으신지요?
  • Error 발생 위치.
    ws_commodity_future.py / line 188
    async with websockets.connect(url, ping_interval=30) as websocket:
    이 때 url 은 ws://ops.koreainvestment.com:21000 사용했음.

=========== Error message =============
Exception has occurred: TimeoutError
exception: no description
asyncio.exceptions.CancelledError:

During handling of the above exception, another exception occurred:

File "/workspaces/open-trading-api/websocket/python/ws_commodity_future.py", line 188, in connect
async with websockets.connect(url, ping_interval=30) as websocket:
File "/workspaces/open-trading-api/websocket/python/ws_commodity_future.py", line 269, in
asyncio.get_event_loop().run_until_complete(connect())
asyncio.exceptions.TimeoutError:

@koreainvestment
Copy link
Owner

안녕하세요
KIS Developers Team 입니다.

고객님 정상적인 보안코드(appkey, appsecret)으로 ws_commodity_future.py 코드 실행 결과 정상적으로 작동되고 있는 것을 확인하였습니다.

  1. 네트워크 연결 문제
    WebSocket 연결이 네트워크 문제로 인해 완료되지 않을 수 있습니다. 네트워크 연결 상태를 재확인해보시기 바랍니다.

  2. 보안코드(appkey, appsecret)
    입력하신 보안코드가 정확한지 확인해보시기 바랍니다. KIS 포털 - 우측 상단의 API 신청 - 휴대폰 인증 후 신청화면에서 보안코드를 재확인하실 수 있습니다.

  3. code_list
    code_list로 원하는 호출을 [tr_type, tr_id, tr_key] 순서대로 리스트를 만드셨는지 확인해보시기 바랍니다.
    ex) code_list = [['1','H0CFASP0','175V01'],['1','H0CFCNT0','175V01']]

@KangDaehern
Copy link
Author

답변 감사드립니다.
네트워크를 변경해서 재 시도 시 정상 동작하는 것을 확인했습니다. 감사합니다. ^^;

추가 문의 하나만 더 드려도 될까요?
ws_commodity_future.py 코드를 원본 그대로 실행 시 (종목, App key 등만 개인것으로 변경 했음)
약 127 번 loop 돌고 난 뒤에 stcuk 상태에서 대기하고 있습니다.

여러 차례 test 시 매 번 거의 비슷한 횟수 (약 127 번) loop 에서 값이 updqte 되지 않고 있습니다.

혹시 요 건 관련해서 조언해 주실만한 사항이 있을까요?
ex) api 호출 횟수에 제한이 있다던가..

@koreainvestment
Copy link
Owner

  1. 네트워크 상태가 초기화 되거나 (화면보호기 장시간 이용시 네트워크 단절될 수 있음)
    기존 발급된 웹소켓 접속키(approval_key)가 재 생성 되며 키정보가 정상적이지 않은 정보로 연결될 때 발생할 수 있습니다.
    자리를 비우실때 화면보호기 설정 기능 확인 부탁드립니다.

  2. 웹소켓 유량 제한
    웹소켓의 경우 1개의 appkey당 체결가+호가 40건 등록 가능하며, 1종목당 체결가+호가 함께 등록하였을 경우 20종목까지 등록가능합니다.
    체결통보는 1건(HTS ID) 등록 가능합니다. 유량제한을 확인해보시기 바랍니다.

  3. 버퍼 오버플로우 (Buffer Overflow)
    클라이언트에서 수신한 데이터를 적절히 처리하지 못할 경우 버퍼 오버플로우가 발생할 수 있습니다.
    이 경우, 클라이언트는 새로운 데이터를 수신할 수 없게 되어 업데이트가 정지될 수 있습니다.
    버퍼 오버플로우 관련 해결책은 구글링 부탁드립니다.

@KangDaehern
Copy link
Author

답변 감사드립니다.
제 경우 위 이슈는 아래 exception 이 간헐적으로 발생하던 이슈로.
except websockets.ConnectionClosed

  • Close(code=<CloseCode.INTERNAL_ERROR: 1011>, reason='keepalive ping timeout')

아래 코드의 ping interval 을 300 -> 1000 정도로 늘려주니 해결되었습니다.
async with websockets.connect(url, ping_interval=1000) as websocket:
조언 감사드립니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants