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

Perché PyMongo lancia AutoReconnect?

Stai fraintendendo AutoReconnect. Viene generato quando il driver tenta di comunicare con il server (per inviare un comando o un'altra operazione) e si verifica un errore di rete o un problema simile. Il nome dell'eccezione ha lo scopo di comunicare che tu non è necessario creare una nuova istanza di MongoClient, il client esistente tenterà di riconnettersi automaticamente quando l'applicazione tenterà l'operazione successiva. Se si verifica lo stesso problema, AutoReconnect viene nuovamente sollevato.

Sospetto che il motivo per cui stai vedendo il timeout dei socket (e la riconnessione automatica viene sollevata) è che esiste un sistema di bilanciamento del carico tra il server e l'applicazione che chiude le connessioni dopo un certo periodo di inattività. Ad esempio, questo apparentemente accade sulla piattaforma Azure di Microsoft dopo 13 minuti di inattività su un socket. Potresti essere in grado di risolvere questo problema usando l'opzione socketKeepAlive, aggiunta in PyMongo 2.8. Nota che dovrai anche impostare l'intervallo keep-alive sul tuo server delle applicazioni su un valore appropriato (il valore predefinito su Linux è 2 ore). Per ulteriori informazioni, vedere qui.