どうやらあなたは切断しません。 db.close_connection()
の使用 クエリが終了した後が役立ちます。また、正しく理解できればCONN_MAX_AGE
いくつかの短い値に役立つ可能性があります。また、django接続にはpgbouncerなどのセッションプーラーを使用することを検討してください。このように、接続が多すぎる場合、エラーで実行を中止するのではなく、待機します(または構成によっては以前を再利用します)...
更新 :私が提案する理由の説明
したがって、スレッドが多い場合は、postgres max_connections
、言及されたエラーが発生します。 CONN_MAX_AGEが渡されていない場合、各スレッドは接続を再利用できます。設定は0であるため、クエリの完了後に接続を閉じる必要がありますが、100のアイドル接続が表示されます。だから彼らは閉じていません。接続の数が多いということは、それらも再利用されないことを意味します(ロジック:100の並列クエリがある場合、すべてがアイドル状態になるわけではなく、接続数が多い場合、再利用されません-新規を開きます)。したがって、djangoはそれらを約束どおりに閉じないと思います-したがって、CONN_MAX_AGEを0に設定してもコードでは機能しません。そこで、db.close_connection()
の使用を提案します 強制的に切断し、CONN_MAX_AGEを小さな値に設定すると、動作が変わる可能性があります。