El ORM de Django administra las conexiones de la base de datos en variables locales de subprocesos. Entonces, cada subproceso diferente que acceda al ORM creará su propia conexión. Puedes verlo en las primeras líneas de django/db/backends/__init__.py
.
Si desea limitar la cantidad de conexiones de base de datos realizadas, debe limitar la cantidad de subprocesos diferentes que realmente acceden al ORM. Una solución podría ser implementar un servicio que delegue las solicitudes de ORM a un grupo de subprocesos de ORM dedicados. Para transmitir las solicitudes y sus resultados desde y hacia otros subprocesos, deberá implementar algún tipo de mecanismo de paso de mensajes. Dado que este es un problema típico de productor/consumidor, los documentos de Python sobre subprocesos deberían dar algunos consejos sobre cómo lograrlo.
Editar: Acabo de buscar en Google "agrupación de conexiones django". Hay muchas personas que se quejan de que Django no proporciona un conjunto de conexiones adecuado. Algunos de ellos lograron integrar un paquete de agrupación separado. Para PostgreSQL, echaría un vistazo al middleware pgpool.