2013-05-30 3 views
1

저는 장고 1.4를 사용 중이며 Postgres 9.2.4와 함께 psycopg2를 사용하고 있습니다. 내 포스트 그레스에서장고 재설정 Postgres 연결

다음은

2013-05-30 16:20:22 UTC LOG: could not receive data from client: Connection reset by peer

를 기록을 유발하는 코드입니다. 관리 명령입니다. 나는 연구를 수행했고 내가 찾을 수있는 모든 것은 장고 거래를 참조한다. 나는 그것들을 사용하지 않고 다음과 같은 것을 시도해 보았다.

['DATABASES']['default']['OPTIONS']['autocommit'] = True

나는 또한 OOM 킬러의 가능성에 대해 읽었습니다하지만, 난 여전히 로그에 메모리의 톤과하지가 있습니다.

import sys 

from django.core.mail import mail_admins 
from django.core.management.base import BaseCommand 
from django.db.models import F 

from redis_cache import get_redis_connection 


    class Command(BaseCommand): 
     help = 'Update the Entry hits' 

     def handle(self, *args, **options): 
      from vplatform.content.models import Entry 

      redis_conn = get_redis_connection('default') 
      hits_for_obj = dict() 
      hit_len = int(redis_conn.llen('entry-hits')) 

      while (hit_len > 0): 
       hit_len = hit_len - 1 
       obj_id = redis_conn.rpop('entry-hits') 
       hits_for_obj[obj_id] = hits_for_obj.get(obj_id, 0) + 1 

      for obj_id, hits in hits_for_obj.items(): 
       try: 
        entry = Entry.objects.get(pk=obj_id) 
        entry.hit_count = F('hit_count') + hits 
        entry.save() 
       except: 
        e = sys.exc_info()[0] 
        message = "Error: %s" % e 
        mail_admins('Update hits error', message) 

모든 도움을 주시면 감사하겠습니다.

답변

1

Django가 관리 명령 내에서 데이터베이스 연결을 닫지 않는 문제가있는 것 같습니다.

import ... 
from django import db 


class Command(BaseCommand): 
    help = 'Update the Entry hits' 

    def handle(self, *args, **options): 
     ... 
     db.close_connection() 
+0

이 문제되지 않습니다 :

수정은 명시 적으로 같은 손잡이의 끝 부분()에서 데이터베이스 연결을 닫습니다. 명령이 실행되는 동안 명령이 실행되는 동안이 오류가 발생합니다 ... – Cerin

+0

@Cerin이 문제의 원인이 된 하위 명령을 호출하고 데이터베이스를 닫는 단원 테스트를 위해 meta 명령을 사용했습니다. 하위 명령이 문제였습니다. 아마도 귀하의 문제는 다른 문제에서 비롯된 것일 수 있습니다. – Nielsvh