sql >> Databasteknik >  >> NoSQL >> MongoDB

Varför kastar PyMongo AutoReconnect?

Du missförstår AutoReconnect. Den höjs när föraren försöker kommunicera med servern (för att skicka ett kommando eller annan operation) och ett nätverksfel eller liknande problem uppstår. Namnet på undantaget är tänkt att kommunicera att du inte gör det måste skapa en ny instans av MongoClient, kommer den befintliga klienten att försöka återansluta automatiskt när din applikation försöker nästa operation. Om samma problem uppstår, aktiveras AutoReconnect igen.

Jag misstänker att anledningen till att du ser sockets timeout (och AutoReconnect höjs) är att det finns en lastbalanserare mellan servern och din applikation som stänger anslutningarna efter en viss period av inaktivitet. Till exempel händer detta tydligen på Microsofts Azure-plattform efter 13 minuter utan aktivitet på en socket. Du kanske kan fixa detta genom att använda alternativet socketKeepAlive, som lagts till i PyMongo 2.8. Observera att du också måste ställa in keepalive-intervallet på din applikationsserver till ett lämpligt värde (standard på Linux är 2 timmar). Se här för mer information.




  1. Flask-MongoEngine &PyMongo Aggregation Query

  2. Orsakas av:org.bson.BsonInvalidOperationException:Ogiltigt tillstånd INITIAL

  3. mongoDB :byter namn på kolumnnamnet i samlingen

  4. mongologgrotation fungerar inte på Windows