Django's ORM administrerer databaseforbindelser i tråd-lokale variabler. Så hver anden tråd, der får adgang til ORM'en, vil skabe sin egen forbindelse. Du kan se det i de første par linjer af django/db/backends/__init__.py
.
Hvis du vil begrænse antallet af oprettede databaseforbindelser, skal du begrænse antallet af forskellige tråde, der faktisk får adgang til ORM. En løsning kunne være at implementere en service, der uddelegerer ORM-anmodninger til en pulje af dedikerede ORM-tråde. For at overføre anmodningerne og deres resultater fra og til andre tråde bliver du nødt til at implementere en form for meddelelsesoverførselsmekanisme. Da dette er et typisk producent-/forbrugerproblem, bør Python-dokumenterne om tråding give nogle hints om, hvordan man opnår dette.
Rediger: Jeg har lige googlet efter "django connection pooling". Der er mange mennesker, der klager over, at Django ikke giver en ordentlig forbindelsespool. Nogle af dem formåede at integrere en separat pooling-pakke. For PostgreSQL ville jeg tage et kig på pgpool middleware.