zjevně se neodpojíš. Pomocí db.close_connection()
po dokončení dotazu pomůže. Také pokud to chápu správně CONN_MAX_AGE
na nějakou krátkou hodnotu by mohlo pomoci. A zvažte použití nějakého pooleru relací, např. pgbouncer pro připojení django. Tímto způsobem, pokud máte příliš mnoho připojení, bude čekat (nebo znovu použije předchozí, v závislosti na konfiguraci) namísto přerušení provádění s chybou...
aktualizovat :vysvětlení, proč to navrhuji
Takže pokud máte více vláken, pak postgres max_connections
, dostanete zmíněnou chybu. Každé vlákno může znovu použít připojení, pokud CONN_MAX_AGE neprošlo. Vaše nastavení je 0, takže připojení by mělo být po dokončení dotazu uzavřeno, ale vidíte 100 nečinné připojení. Takže se nezavírají. Velký počet připojení znamená, že se ani znovu nepoužívají (logika:pokud byste měli 100 paralelních dotazů, nebyly by všechny nečinné, a pokud jich máte tolik, znovu se nepoužívají - otevírání nových). Takže si myslím, že je django nezavře, jak bylo slíbeno - takže CONN_MAX_AGE nastavený na 0 ve vašem kódu nefunguje. Navrhuji tedy použít db.close_connection()
vynucení odpojení a nastavení CONN_MAX_AGE na nějakou malou hodnotu může změnit chování.