我有一个独立的脚本,使用Django ORM从/向Postgre读/写。
偶尔会出现此错误
DatabaseError:查询超时服务器 意外关闭了连接 这可能意味着服务器异常终止 处理请求之前或处理时。
我需要重新建立连接并重试脚本中的处理代码,但似乎无法找到方法。以下代码在重试时引发“InterfaceError:connection already”,因此无效。
for repeat in range(5):
try:
.....................PROCESSING CODE...................
except DatabaseError, e:
time.sleep(30)
else:
break
else:
return
有什么想法吗?
答案 0 :(得分:28)
我有类似的需要重新创建数据库连接,我正在尝试以下黑魔法来重置django 1.3中的连接:
from django.db import connection
connection.connection.close()
connection.connection = None
我没有PostgreSQL方便试试这个,但它似乎至少适用于MySQL和sqlite。此外,如果您正在使用multi-db,则必须从django.db.connections字典对特定连接执行此步骤。