MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pourquoi PyMongo lance-t-il la reconnexion automatique ?

Vous comprenez mal AutoReconnect. Il est déclenché lorsque le pilote tente de communiquer avec le serveur (pour envoyer une commande ou une autre opération) et qu'une panne de réseau ou un problème similaire se produit. Le nom de l'exception est destiné à indiquer que vous ne le faites pas devez créer une nouvelle instance de MongoClient, le client existant tentera de se reconnecter automatiquement lorsque votre application tentera l'opération suivante. Si le même problème se produit, la reconnexion automatique est déclenchée à nouveau.

Je soupçonne que la raison pour laquelle vous voyez le délai d'expiration des sockets (et la reconnexion automatique en cours) est qu'il existe un équilibreur de charge entre le serveur et votre application qui ferme les connexions après une certaine période d'inactivité. Par exemple, cela se produit apparemment sur la plate-forme Azure de Microsoft après 13 minutes d'inactivité sur un socket. Vous pourrez peut-être résoudre ce problème en utilisant l'option socketKeepAlive, ajoutée dans PyMongo 2.8. Notez que vous devrez également définir l'intervalle keepalive sur votre serveur d'application sur une valeur appropriée (la valeur par défaut sous Linux est de 2 heures). Voir ici pour plus d'informations.