开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜