복붙노트

[REDIS] 레디 스 펍 / 하위에 떨어 연결에서 복구

REDIS

레디 스 펍 / 하위에 떨어 연결에서 복구

나는 레디 스의 DB에 연결하는 클라이언트를 실행하고 있습니다. 클라이언트는 와이파이 연결하고 시간에 연결을 삭제합니다. 이 경우 불행하게도,이 프로그램은 경고의 모든 유형을 던지는없이 실행 유지합니다.

r = redis.StrictRedis(host=XX, password=YY...)
ps = r.pubsub()
ps.subscribe("12345")
for items in ps.listen():
    if items['type'] == 'message':
       data = items['data']

이상적으로, 내가 찾던 캐치는 연결이 끊어진 경우, 다음 일을하고 실행 백업 얻을 시도하고 연결을 다시 설정, 수정 몇 가지 오류를 할 이벤트이다. 이것은 파이썬 프로그램에서 수행해야 하는가? 나는 외부 감시를해야 하는가?

해결법

  1. ==============================

    1.불행하게도, 하나는 사용할 수 있는지 확인하는 '핑'레디 스에 있습니다. 당신은 레디 스 스토리지에 값을 넣어하려고하면 연결이 끊어지면, 그것은 ConnectionError 예외를 발생합니다. 그러나 듣고 () 발생기는 가까운 자동으로 연결이 손실되지 않습니다 때.

    불행하게도, 하나는 사용할 수 있는지 확인하는 '핑'레디 스에 있습니다. 당신은 레디 스 스토리지에 값을 넣어하려고하면 연결이 끊어지면, 그것은 ConnectionError 예외를 발생합니다. 그러나 듣고 () 발생기는 가까운 자동으로 연결이 손실되지 않습니다 때.

    나는 해킹 레디 스 '연결 풀 도움이 그것을 시도를 줄 수 있다고 생각합니다.

    추신 에서는 신뢰할 수없는 네트워크 환경에서 레디 스에 연결하기가 매우 불안정하다.

  2. ==============================

    2.이 오래된, 오래된 질문이다 그러나 나는 내 자신의 질문 중 하나를 연결하고 다시 그것을 통해 실행 일어났다. 그것은 클라이언트가 재 연결을 시도하는 무한 루프를 입력 원인이 된 레디 스 라이브러리에 버그가 있었다 밝혀졌다 경우 그것을 레디 스 서버에 연결 해제. 나는이 문제를 디버깅하고 변경을 PR'd. 지금은 오래 전에 합병되었다. 일단 메인테이너도 같은 문제를 가지고 두 번째 위치를 알고 떠올랐다.

    이 오래된, 오래된 질문이다 그러나 나는 내 자신의 질문 중 하나를 연결하고 다시 그것을 통해 실행 일어났다. 그것은 클라이언트가 재 연결을 시도하는 무한 루프를 입력 원인이 된 레디 스 라이브러리에 버그가 있었다 밝혀졌다 경우 그것을 레디 스 서버에 연결 해제. 나는이 문제를 디버깅하고 변경을 PR'd. 지금은 오래 전에 합병되었다. 일단 메인테이너도 같은 문제를 가지고 두 번째 위치를 알고 떠올랐다.

    이 문제는 더 이상 발생하지 않습니다.

    완전히 질문에 대답하기 위해 나는 내가이 고정 된 이후의 시간을 부여하지만 지금은 특정 오류는 잡아에 다시 연결할 수 있습니다 반환이되는 오류 기억할 수 없습니다.

  3. from https://stackoverflow.com/questions/13654243/recover-from-dropped-connection-in-redis-pub-sub by cc-by-sa and MIT license