2013-11-01 1 views
2

레디 스-PY의 PubSub 클래스는 가끔 다음과 같은 예외가 얻을 사용 :레디 스-평 "ConnectionError : 소켓 원격 끝에 폐쇄"

Exception in thread listener_2013-10-24 12:50:31.687000: 
Traceback (most recent call last): 
    File "c:\Python27\Lib\threading.py", line 551, in __bootstrap_inner 
    self.run() 
    File "c:\Python27\Lib\threading.py", line 504, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "C:\Users\Administrator\Documents\my_proj\my_module.py", line 69, in _listen 
    for message in _pubsub.listen(): 
    File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\redis\client.py", line 1555, in listen 
    r = self.parse_response() 
    File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\redis\client.py", line 1499, in parse_response 
    response = self.connection.read_response() 
    File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\redis\connection.py", line 306, in read_response 
    response = self._parser.read_response() 
    File "C:\Users\Administrator\virtual_environments\spyker\lib\site-packages\redis\connection.py", line 106, in read_response 
    raise ConnectionError("Socket closed on remote end") 
ConnectionError: Socket closed on remote end 

는 이벤트를 어떻게 원인이 있습니까?
이 예외가 발생하면 합리적인 처리 논리는 무엇입니까? listen()을 다시 시도 하시겠습니까?

묻는 질문의 이유는이 문제를 재현하는 방법을 모르기 때문입니다. 희귀하지만 치명적이므로이 오류가 다시 발생하기 전에 일부 논리를 만들어야합니다. 이것의

답변

2

가능한 소스 :

연결의 반대편에 코드에서 오류가 연결이 원격 컴퓨터를 다시 부팅 한
  • 하락되는 원인이 아니면
  • 사람이 재생되는 추락
    1. 주변 네트워크 인터페이스 사용 ipconfig 또는 그 유사 함
    2. 일시적인 네트워크 오류가 발생하여 연결이 이 될만큼 길었습니다.

    왜 이런 일이 발생했는지 (목록에없는 이유가있을 수 있음) 걱정하지 않는 것이 좋습니다. 대신 그 문제를 처리하는 방법에 중점을 둡니다.

    코드에서 try/except를 추가하고 수신 된 부분 데이터를 처리하거나 수신 된 부분 데이터를 무시하는 것이 가장 좋습니다.

  • +0

    이것은 빨간색입니다. 서버가 OP의 제어 가능성이 있습니다. 그는 근본 원인과 오류 처리에 대해 걱정할 필요가 있습니다. – Marcin

    0

    원인은 종료되었거나 네트워크 오류로 인해 redis 서버에 연결할 수없는 경우입니다. 이 경우 redis 서버의 상태와 네트워크 연결을 확인하여 원인을 찾으십시오.

    그러나 이러한 일이 발생하는 것은 필연적입니다. 재발견이 재발행되는 동안 사용자에게 기다리라고 요청하는 경우에도 처리 방법을 알아야합니다.