ORM Django mengelola koneksi basis data dalam variabel lokal-utas. Jadi setiap utas berbeda yang mengakses ORM akan membuat koneksinya sendiri. Anda dapat melihatnya di beberapa baris pertama django/db/backends/__init__.py
.
Jika Anda ingin membatasi jumlah koneksi database yang dibuat, Anda harus membatasi jumlah utas berbeda yang benar-benar mengakses ORM. Solusinya adalah dengan mengimplementasikan layanan yang mendelegasikan permintaan ORM ke kumpulan utas ORM khusus. Untuk mengirimkan permintaan dan hasilnya dari dan ke utas lain, Anda harus menerapkan semacam mekanisme penyampaian pesan. Karena ini adalah masalah produsen/konsumen yang khas, dokumen Python tentang threading harus memberikan beberapa petunjuk bagaimana mencapai ini.
Sunting: Saya baru saja mencari di Google untuk "pengumpulan koneksi Django". Ada banyak orang yang mengeluh bahwa Django tidak menyediakan kumpulan koneksi yang tepat. Beberapa dari mereka berhasil mengintegrasikan paket pooling terpisah. Untuk PostgreSQL, saya akan melihat middleware pgpool.