9

Django 1.6 では、Persistent Connections 機能が導入されました。ただし、django の ORM を使用するスクリプトを終了すると、db 側で少なくともいくつかの接続が開いたままになることに気付きました。
セットアップ: django 6.0、postgres 9.2、psycopg2 2.5.1。

スクリプトからデータベースへの接続を適切に閉じるにはどうすればよいですか?

注意事項のセクションでは、django がスレッドごとに接続を開くことについて言及しているため、マルチスレッド スクリプトでは、db にアクセスしないスレッドであっても、django はスレッドごとに接続を作成しますか?
各スレッドは個別にデータベース接続を閉じる必要がありますか?

上記の両方の質問に対する答えが「はい」の場合、スクリプトの終了時に参加しないデーモン スレッド (comm など) で何ができますか?

4

2 に答える 2

5

アップグレードしたばかりで、これが発生しましたが、サブプロセスを起動する前のメインプロセスでは、各プロセスに独自の接続を与えるためclose_old_connectionsに古いように機能しません。close_connectionsしかし、何close_connectionsをするために使用するかを見れば、 docsを再作成できます。

したがって、サブプロセスを作成する前に、メインプロセスでこれを行います。

from django.db import connections
for conn in connections.all():
    conn.close()

そして、それはうまく機能します。newclose_old_connectionsは、有効期限が切れているかなくなった場合にのみ接続を閉じます。

于 2015-09-16T16:36:52.883 に答える