2010-12-15 16 views
12

Tengo un script independiente que lee/escribe desde/a Postgre usando Django ORM.Django cómo volver a conectar después de DatabaseError: query timeout

me sale este error de vez en cuando

DatabaseError: query timeout server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.

que necesito para volver a establecer la conexión y vuelva a intentar el código de procesamiento en el guión, pero parece que no puede encontrar un camino. El siguiente código plantea 'InterfaceError: conexión ya cerrada' al volver a intentar, por lo que no funciona.

for repeat in range(5): 
    try: 
     .....................PROCESSING CODE................... 
    except DatabaseError, e: 
     time.sleep(30) 
    else: 
     break 
else: 
    return 

¿Alguna idea?

Respuesta

25

que tienen una necesidad similar para volver a crear la conexión de base de datos y estoy tratando de la siguiente magia negro para restablecer la conexión en Django 1.3:

from django.db import connection 
connection.connection.close() 
connection.connection = None 

no tengo PostgreSQL útil para probar esto, pero parece funcionar para MySQL y sqlite al menos. Además, si usa multi-db, tendrá que realizar este paso en su conexión específica desde el diccionario django.db.connections.

+1

Ya no me molesta el problema. Si alguien más verificó que esta respuesta es la solución correcta, la marcaré. Gracias por responder. – kakarukeys

+0

Dando esto una oportunidad. Te dejaré saber si funciona ... –

+0

@kakarukeys Esto funciona para mí. (Django 1.4 y usando postgresql) –

Cuestiones relacionadas