Django how to reconnect after DatabaseError: query timeout
I have a stand-alone script that reads/writes from/to Postgre using Django ORM.
I get this error occasionally
DatabaseError: query timeout server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.
I need to re-establish the connection and retry the processing code in the script, but can't seem to find a way. The following code raises 'InterfaceError: connection already closed' on retry, so it doesn't work.
for repeat in range(5):
try:
.....................PROCESSING CODE...................
except Databas开发者_开发技巧eError, e:
time.sleep(30)
else:
break
else:
return
Any idea?
I have a similar need for recreating the database connection and I'm trying the following black magic to reset the connection in django 1.3:
from django.db import connection
connection.connection.close()
connection.connection = None
I don't have PostgreSQL handy to try this out, but it seems to work for MySQL and sqlite at least. Also, if you're using multi-db, you're going to have to perform this step on your specific connection from the django.db.connections dictionary.
精彩评论