sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug af Django ORM i tråde og undgå for mange klientundtagelser ved at bruge BoundedSemaphore

Django's ORM administrerer databaseforbindelser i tråd-lokale variabler. Så hver anden tråd, der får adgang til ORM'en, vil skabe sin egen forbindelse. Du kan se det i de første par linjer af django/db/backends/__init__.py .

Hvis du vil begrænse antallet af oprettede databaseforbindelser, skal du begrænse antallet af forskellige tråde, der faktisk får adgang til ORM. En løsning kunne være at implementere en service, der uddelegerer ORM-anmodninger til en pulje af dedikerede ORM-tråde. For at overføre anmodningerne og deres resultater fra og til andre tråde bliver du nødt til at implementere en form for meddelelsesoverførselsmekanisme. Da dette er et typisk producent-/forbrugerproblem, bør Python-dokumenterne om tråding give nogle hints om, hvordan man opnår dette.

Rediger: Jeg har lige googlet efter "django connection pooling". Der er mange mennesker, der klager over, at Django ikke giver en ordentlig forbindelsespool. Nogle af dem formåede at integrere en separat pooling-pakke. For PostgreSQL ville jeg tage et kig på pgpool middleware.




  1. SQL Server:SLET vs TRUNCATE

  2. Hvordan opretter og bruger man en midlertidig tabel i oracle-lagret procedure?

  3. Unitils og DBMaintainer - hvordan får man dem til at fungere med flere brugere/skemaer?

  4. At redigere DataGridview og også gemme den i en databasetabel ved hjælp af c#