MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Warum löst PyMongo AutoReconnect aus?

Sie missverstehen AutoReconnect. Es wird ausgelöst, wenn der Treiber versucht, mit dem Server zu kommunizieren (um einen Befehl oder eine andere Operation zu senden) und ein Netzwerkfehler oder ein ähnliches Problem auftritt. Der Name der Ausnahme soll mitteilen, dass Sie dies nicht tun eine neue Instanz von MongoClient erstellen müssen, versucht der vorhandene Client automatisch, die Verbindung wiederherzustellen, wenn Ihre Anwendung den nächsten Vorgang versucht. Wenn dasselbe Problem auftritt, wird AutoReconnect erneut ausgelöst.

Ich vermute, dass der Grund für das Socket-Timeout (und das Auslösen von AutoReconnect) darin besteht, dass sich zwischen dem Server und Ihrer Anwendung ein Load Balancer befindet, der Verbindungen nach einiger Zeit der Inaktivität schließt. Dies geschieht zum Beispiel offenbar auf Microsofts Azure-Plattform nach 13 Minuten ohne Aktivität auf einer Steckdose. Möglicherweise können Sie dies beheben, indem Sie die Option socketKeepAlive verwenden, die in PyMongo 2.8 hinzugefügt wurde. Beachten Sie, dass Sie auch das Keepalive-Intervall auf Ihrem Anwendungsserver auf einen geeigneten Wert einstellen müssen (der Standardwert unter Linux ist 2 Stunden). Weitere Informationen finden Sie hier.