2014-06-14 3 views
3

redis-py를 통해 Python의 Redis를 사용하여 JSON을 정렬 된 집합에 저장하고 있습니다.redis-py - ConnectionError : 원격 종료시 소켓이 닫힙니다.

Redis에서 일정량의 데이터를 가져올 때까지 모든 것이 제대로 작동합니다. 난 단지 20 개 항목을 요청하고 있습니다로


redis.StrictRedis(host='localhost', port=6379, db=12) 
redis_client.zrange('key', 0, 20, 'desc') 

는 잘 작동합니다.

는 최대한 빨리 35 위에 새로운 것을 시도로 내가 얻을 :

ConnectionError: Socket closed on remote end 

내가 주위 작업을 시도했습니다 5 세트에서 쿼리를 "청크"하지만 내가 레디 스 너무 빨리 치고있어 보인다 5라는 많은 쿼리를 통해 여전히 예외가 발생할 수 있습니다.

내가 어떻게 든 재구성 중입니까?


저는 Windows와 Ubuntu에서 모두 사용해 보았습니다.

지난 주에 나는 실제로 최대 100 개의 항목을 한꺼번에 가져 왔고 10 개 그룹으로 묶어서 청크 작업을했는데 그때부터 나의 Redis 서버는 더욱 민감 해졌습니다.


다음은 오류를 재현하는 작은 스크립트입니다.

import redis 
import ujson as json 

r = redis.StrictRedis(host="localhost", port=6379, db=12) 
dummy_json = {"data":"hfoiashflkasdjaisdäjpagufeiaghaifhaspdas", 
      "more": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp", 
      "more1": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp", 
      "more2": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp", 
      "more3": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp", 
      "more4": "sdasdpjapsfdjapsofjaspofjsapojfpoasjfpoajfp"} 

for score in xrange(0, 6000): 
    dummy_json["score"]=score 
    r.zadd("test", score, json.dumps(dummy_json)) 

result = r.zrange('test', 0, 200, 'desc') 
print result 

당신은 당신이 만드는 경우 dummy_json 적은 데이터를 보관 또는 예외가 사라질 것 한 번에 적은 항목을 요청하는 것을 볼 수 있습니다.

+0

코드는 기본 redis 설정으로 내 redis 2.6.16 installatoin에서 올바르게 작동합니다. 또한 12000까지의 더 큰 항목, 즉'r.zrange ('test', 0, 12000, 'desc')'에서도 작동합니다. 귀하의 설정이 기본 설정과 다른가요? – mhawke

+0

내가 아는 것은 아닙니다. 나는 그것을 설치했다. 당신이 볼 특정 설정? – user3740332

+0

timeout, tcp-keepalive, 복제 설정 - 네트워크 또는 서버로드에 영향을 미치는 모든 것. 테스트하는 동안 Redis 서버가로드되어 있습니까? 아니면 테스트 전용입니까? – mhawke

답변

0

좋아, 내가 완전히 redis 제거하고 재설치 -> 오류가 사라졌습니다. 수면 부족 지점에서 구성을 변경해야합니다. 감사 !