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

Hvorfor kaster PyMongo AutoReconnect?

Du misforstår AutoReconnect. Den hæves, når driveren forsøger at kommunikere med serveren (for at sende en kommando eller anden handling), og der opstår en netværksfejl eller lignende problem. Navnet på undtagelsen er beregnet til at kommunikere, at du ikke skal oprette en ny forekomst af MongoClient, vil den eksisterende klient forsøge at oprette forbindelse igen automatisk, når din applikation prøver den næste handling. Hvis det samme problem opstår, aktiveres AutoReconnect igen.

Jeg formoder, at grunden til, at du ser sockets timeout (og AutoReconnect bliver hævet), er, at der er en belastningsbalancer mellem serveren og din applikation, der lukker forbindelser efter en periode med inaktivitet. For eksempel sker dette tilsyneladende på Microsofts Azure-platform efter 13 minutter uden aktivitet på en socket. Du kan muligvis løse dette ved at bruge socketKeepAlive-indstillingen, tilføjet i PyMongo 2.8. Bemærk, at du også skal indstille keepalive-intervallet på din applikationsserver til en passende værdi (standarden på Linux er 2 timer). Se her for mere information.




  1. MongoDB:Hvordan finder man ud af, om et array-felt indeholder et element?

  2. MongoEngine Document Object lavet ved hjælp af from_json gemmer ikke

  3. udløb redis cache-nøgle på bestemte tidspunkter i stedet for varighed

  4. Migrering til MongoDB:hvordan man forespørger GROUP BY + WHERE