ORM společnosti Django spravuje databázová připojení v lokálních proměnných podprocesů. Takže každé různé vlákno přistupující k ORM vytvoří své vlastní připojení. Můžete to vidět na prvních řádcích django/db/backends/__init__.py
.
Pokud chcete omezit počet vytvořených databázových připojení, musíte omezit počet různých vláken, která skutečně přistupují k ORM. Řešením může být implementace služby, která deleguje požadavky ORM na fond vyhrazených vláken ORM. Pro přenos požadavků a jejich výsledků z a do jiných vláken budete muset implementovat nějaký mechanismus předávání zpráv. Protože se jedná o typický problém výrobce/spotřebitele, měla by dokumentace Pythonu o vytváření vláken poskytnout nějaké rady, jak toho dosáhnout.
Upravit: Právě jsem googlil "django connection pooling". Existuje mnoho lidí, kteří si stěžují, že Django neposkytuje správný fond připojení. Některým z nich se podařilo integrovat samostatný sdružovací balíček. Pro PostgreSQL bych se podíval na middleware pgpool.