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.