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

_InactiveRpcError 문의 #70

Closed
thesoomyung opened this issue Apr 1, 2022 · 4 comments
Closed

_InactiveRpcError 문의 #70

thesoomyung opened this issue Apr 1, 2022 · 4 comments
Labels
bug Something isn't working

Comments

@thesoomyung
Copy link

thesoomyung commented Apr 1, 2022

안녕하세요?

koapy 가 아래와 같은 에러로 자주 멈춥니다.

---------------------------------------------------------------------------
_InactiveRpcError                         Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_16832/2625759874.py in <module>
      4 from koapy.backend.kiwoom_open_api_plus.grpc.KiwoomOpenApiPlusServiceClient import KiwoomOpenApiPlusServiceClient
      5 kiwoom = KiwoomOpenApiPlusServiceClient()
----> 6 kiwoom.EnsureConnected()

~\.conda\envs\danta\lib\site-packages\koapy\backend\kiwoom_open_api_plus\core\KiwoomOpenApiPlusQAxWidgetMixin.py in EnsureConnected(self, credentials)
    794         로그인이 되어있지 않다면 로그인을 수행합니다.
    795         """
--> 796         is_connected = self.IsConnected()
    797         if not is_connected:
    798             self.Connect(credentials)

~\.conda\envs\danta\lib\site-packages\koapy\backend\kiwoom_open_api_plus\core\KiwoomOpenApiPlusQAxWidgetMixin.py in IsConnected(self)
     41         키움증권 서버에 접속되었는지 여부를 반환합니다.
     42         """
---> 43         return self.GetConnectState() == 1
     44 
     45     def ShowAccountWindow(self):

~\.conda\envs\danta\lib\site-packages\koapy\backend\kiwoom_open_api_plus\grpc\KiwoomOpenApiPlusServiceClientSideDynamicCallable.py in __call__(self, *args)
     32     def __call__(self, *args):
     33         request = self._create_call_request(self._name, args)
---> 34         response = self._stub.Call(request)
     35         result = self._unpack_response(response)
     36         return result

~\AppData\Roaming\Python\Python39\site-packages\grpc\_channel.py in __call__(self, request, timeout, metadata, credentials, wait_for_ready, compression)
    944         state, call, = self._blocking(request, timeout, metadata, credentials,
    945                                       wait_for_ready, compression)
--> 946         return _end_unary_response_blocking(state, call, False, None)
    947 
    948     def with_call(self,

~\AppData\Roaming\Python\Python39\site-packages\grpc\_channel.py in _end_unary_response_blocking(state, call, with_call, deadline)
    847             return state.response
    848     else:
--> 849         raise _InactiveRpcError(state)
    850 
    851 

_InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
	status = StatusCode.UNAVAILABLE
	details = "failed to connect to all addresses"
	debug_error_string = "{"created":"@1648791831.720000000","description":"Failed to pick subchannel","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":3129,"referenced_errors":[{"created":"@1648791831.720000000","description":"failed to connect to all addresses","file":"src/core/lib/transport/error_utils.cc","file_line":163,"grpc_status":14}]}"

재현시나리오를 특정하지는 못했으나, 계좌조회, 조건검색, 주식매매 등 여러 동작들이 반복되던 중에
꼭 한번씩은 발생되는 것 같습니다. 어떻게 디버깅해보면 좋을지 조언 부탁드립니다.

@thesoomyung thesoomyung added the bug Something isn't working label Apr 1, 2022
@dh377
Copy link
Contributor

dh377 commented Apr 4, 2022

특정한 프로세스로 버그 재현이 안 된다면, 단순히 gRPC Server-Client 통신이 안 좋은것인지도 모릅니다. 서버를 Remotely 운영하십니까?

@thesoomyung
Copy link
Author

서버는 remote 로 운영하지않고 local로만 운영합니다.
일단.. gRPC 응답없을때는 koapy를 다시 띄우는 것으로 우회해서 사용하려고 합니다.

@dh377
Copy link
Contributor

dh377 commented May 16, 2022

비슷한 문제를 겪었습니다. Windows 10에서 python을 바로 호출하면 "Command Prompt" 쉘에서 프로그램이 동작하는데, 이때, 내부 문자열 인코딩이 '949 (EUC-KR)'로 처리되다가 오류가 발생하는 것으로 예상됩니다. "PowerShell 7 Core"를 따로 설치하여, 여기서 python을 호출하여 프로그램을 실행할 때는 문제가 발생하지 않았습니다.

@dh377
Copy link
Contributor

dh377 commented May 30, 2022

비슷한 문제를 겪었습니다. Windows 10에서 python을 바로 호출하면 "Command Prompt" 쉘에서 프로그램이 동작하는데, 이때, 내부 문자열 인코딩이 '949 (EUC-KR)'로 처리되다가 오류가 발생하는 것으로 예상됩니다. "PowerShell 7 Core"를 따로 설치하여, 여기서 python을 호출하여 프로그램을 실행할 때는 문제가 발생하지 않았습니다.

이 문제는 좀 더 근원적으로 단순히 문자열 디코딩 문제가 아니라, gRPC 서버가 클라이언트에 전송하는 과정에서 시스템 불안정이 디코딩 할 수 없는 문자열(노이즈)을 생성하는 문제와 연관이 있습니다. 즉, 시스템 안정성과도 연관이 있는 문제로 보입니다. 시스템 냉각이 잘 안 되는 시스템에서 간헐적으로 가비지 문자열이 gRPC 스트림에 들어오는데, 그게 스트림을 멈추게하는 원인이 되었습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants