2010-12-15 14 views
12

私はDjango ORMを使用してPostgreから読み書きするスタンドアロンスクリプトを持っています。Django DatabaseErrorの後に再接続する方法:クエリタイムアウト

が、私はこのエラーを取得し、時折

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

私は接続を再確立し、スクリプトの処理コードを再試行する必要がありますが、方法を見つけるように見えることはできません。次のコードは、再試行時に 'InterfaceError:connection already closed'を呼び出すため、動作しません。

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

、私はこれを試して便利なのPostgreSQLを持っていない

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

答えて

25

は、私は、データベース接続を再作成するための同様の必要性があると私はジャンゴ1.3での接続をリセットするには、次の黒魔法をしようとしていますそれは少なくともMySQLとsqliteのために働くようです。また、マルチdbを使用している場合は、django.db.connectionsディクショナリから特定の接続に対してこの手順を実行する必要があります。

+1

私はもうこの問題の影響を受けません。他の誰かがこの答えを正しい解決策であると証明したら、私はそれをマークします。答えてくれてありがとう。 – kakarukeys

+0

これを行ってください。それが動作するかどうかを知らせます... –

+0

@kakarukeysこれは私のために働く。 (Django 1.4とpostgresqlを使って) –

関連する問題