Django如何在DatabaseError之后重新连接:查询超时

kak*_*eys 14 database django postgresql orm

我有一个独立的脚本,使用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
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Wes*_*ham 31

我有类似的需要重新创建数据库连接,我正在尝试以下黑魔法重置django 1.3中的连接:

from django.db import connection
connection.connection.close()
connection.connection = None
Run Code Online (Sandbox Code Playgroud)

我没有PostgreSQL方便试试这个,但它似乎至少适用于MySQL和sqlite.此外,如果您正在使用multi-db,则必须从django.db.connections字典对特定连接执行此步骤.