PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Używanie Django ORM w wątkach i unikanie wyjątków zbyt wielu klientów za pomocą BoundedSemaphore

ORM Django zarządza połączeniami z bazą danych w zmiennych lokalnych wątków. Tak więc każdy inny wątek uzyskujący dostęp do ORM utworzy własne połączenie. Możesz to zobaczyć w pierwszych kilku wierszach django/db/backends/__init__.py .

Jeśli chcesz ograniczyć liczbę wykonanych połączeń z bazą danych, musisz ograniczyć liczbę różnych wątków, które faktycznie uzyskują dostęp do ORM. Rozwiązaniem może być wdrożenie usługi, która deleguje żądania ORM do puli dedykowanych wątków ORM. Aby przesyłać żądania i ich wyniki zi do innych wątków, będziesz musiał zaimplementować jakiś mechanizm przekazywania wiadomości. Ponieważ jest to typowy problem producenta/konsumenta, dokumentacja Pythona dotycząca wątków powinna zawierać wskazówki, jak to osiągnąć.

Edytuj: Właśnie wygooglowałem "pulowanie połączeń django". Wiele osób narzeka, że ​​Django nie zapewnia odpowiedniej puli połączeń. Niektórym z nich udało się zintegrować osobny pakiet poolingowy. W przypadku PostgreSQL przyjrzę się oprogramowaniu pośredniczącemu pgpool.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy nadal można odczytać zablokowany wiersz [w Postgresie]?

  2. Hibernacja zagnieżdżonego zapytania przy użyciu kryteriów

  3. SQL - czy kolejność warunków OR ma znaczenie?

  4. Jak uniknąć podkreśleń w Postgresql

  5. Dlaczego postgresql 9.1 nie działa z rails 3.0?