sql >> Databáze >  >> NoSQL >> MongoDB

osvědčený postup sdružování django + PyMongo?

Jak funguje sdružování připojení v PyMongu?

Každá instance připojení má vestavěné sdružování připojení. Ve výchozím nastavení má každé vlákno při své první operaci rezervovaný vlastní soket. Tyto zásuvky jsou drženy, dokud toto vlákno nezavolá end_request().

Volání end_request() umožňuje návrat soketu do fondu a jeho použití jinými vlákny namísto vytváření nového soketu. Rozumné použití této metody je důležité pro aplikace s mnoha vlákny nebo s dlouho běžícími vlákny, které málo volají PyMongooperations .

Případně připojení vytvořené pomocí auto_start_request=False bude sdílet sokety (bezpečně) mezi všemi vlákny.

Myslím, že záleží na typu aplikace, kterou máte, a na tom, jak dlouho budou požadavky držet připojení. Myšlenka volání end_request pomáhá s dlouho běžícími požadavky, které se drží na soketu po dlouhou dobu a způsobují vytvoření mnoha soketů. Pokud jediný požadavek může uvolnit připojení, když ho již nepotřebuje, lze soket znovu použít pro jiné požadavky.

Pokud jsou to rychlé požadavky, pak věřím, že auto_start_request=False funguje opětovným použitím zásuvky.

Zajištění toho, že připojení bude používat stejný soket, znamená, že bude mít konzistentní čtení. Přemýšlejte, zda jste provedli dotaz, ale došlo ke zpoždění, a poté okamžitě provedli další dotaz a ten použil jiný soket. Tato zásuvka zvládá reagovat dříve než předchozí. Měli byste nekonzistentní data, protože neodrážejí předchozí zápis.




  1. Proč bylo v tomto programu gevent provedeno pouze jedno připojení k redis?

  2. Průvodce dotazy v Spring Data MongoDB

  3. Metoda Mongoose find s $or podmínkou nefunguje správně

  4. Nelze se ověřit na mongodb pomocí PHP