sql >> Databáze >  >> RDS >> PostgreSQL

Používání Django ORM ve vláknech a vyhýbání se příliš mnoha výjimkám klientů pomocí BoundedSemaphore

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.




  1. Jak automatizovat Galera Cluster pomocí ClusterControl CLI

  2. Vyskakovací okna Map Google uvnitř nic nezobrazují

  3. Čekání na localhost, navždy!

  4. Získávejte a zobrazujte obrázky BLOB z databáze Mysql pomocí Tkinter