sql >> Database teknologi >  >> NoSQL >> MongoDB

bedste praksis for django + PyMongo-pooling?

Hvordan fungerer forbindelsespooling i PyMongo?

Hver Connection-instans har indbygget forbindelsespooling. Som standard får hver tråd sin egen socket reserveret ved dens første operation. Disse sockets holdes, indtil end_request() kaldes af den tråd.

Ved at kalde end_request() kan socket returneres til puljen og bruges af andre tråde i stedet for at oprette en ny socket. Fornuft brug af denne metode er vigtig for applikationer med mange tråde eller med langvarige tråde, der laver få kald til PyMongooperations .

Alternativt vil en forbindelse oprettet med auto_start_request=False dele stik (sikkert) mellem alle tråde.

Jeg tror, ​​det kommer ned til den type applikation, du har, og hvor længe anmodningerne vil holde på en forbindelse. Ideen med at kalde end_request hjælper med langvarige forespørgsler, der holder på en socket i lang tid og får mange sockets til at blive oprettet. Hvis en enkelt anmodning kan frigive forbindelsen, når den ikke længere har brug for den, kan stikket genbruges til andre anmodninger.

Hvis det er hurtige anmodninger, så tror jeg, at auto_start_request=False fungerer ved at genbruge stikket.

At sikre, at en forbindelse bliver ved med at bruge den samme stikkontakt, betyder, at den vil have ensartede læsninger. Tænk, hvis du lavede en forespørgsel, men den blev forsinket, og derefter straks lavede en anden forespørgsel, og den brugte en anden socket. Denne socket formår at reagere før den forrige. Du ville have inkonsistente data, da de ikke afspejler den tidligere skrivning.




  1. Mongoose.js instance.save() tilbagekald udløses ikke

  2. $spring og $limit i aggregeringsramme

  3. Redis connect ECONNREFUSED i NodeJS i Kubernetes-klyngen

  4. Angiv flere kriterier for matrixelementer