явно не прекъсваш връзката. Използване на db.close_connection()
след приключване на заявката ще помогне. Също така, ако съм разбрал правилно CONN_MAX_AGE
до някаква кратка стойност може да помогне. И обмислете използването на някакъв сесиен пулер, например pgbouncer за django връзки. По този начин, ако имате твърде много връзки, тя ще изчака (или ще използва повторно предишната, в зависимост от конфигурацията), вместо да прекъсне изпълнението с грешка...
актуализация :обяснение защо го предлагам
Така че, ако имате повече нишки, тогава postgres max_connections
, получавате спомената грешка. Всяка нишка може да използва повторно връзката, ако CONN_MAX_AGE не е преминал. Вашата настройка е 0, така че връзката трябва да бъде затворена след завършване на заявката, но виждате 100 неактивна връзка. Така че те не се затварят. Големият брой връзки означава, че те също не се използват повторно (логика:ако имате 100 паралелни заявки, те няма да са неактивни, а ако имате толкова много, те не се използват повторно - отварят се нови). Така че мисля, че django не ги затваря, както е обещано - така че CONN_MAX_AGE, зададен на 0, не работи във вашия код. Затова предлагам да използвате db.close_connection()
за принудително прекъсване на връзката и задаване на CONN_MAX_AGE на някаква малка стойност може да промени поведението.