MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Por que o PyMongo lança o AutoReconnect?


Você está entendendo mal o AutoReconnect. Ele é gerado quando o driver tenta se comunicar com o servidor (para enviar um comando ou outra operação) e ocorre uma falha de rede ou problema semelhante. O nome da exceção serve para comunicar que você não tiver que criar uma nova instância do MongoClient, o cliente existente tentará se reconectar automaticamente quando seu aplicativo tentar a próxima operação. Se ocorrer o mesmo problema, AutoReconnect é gerado novamente.

Suspeito que o motivo pelo qual você está vendo o tempo limite dos soquetes (e o AutoReconnect sendo gerado) é que existe um balanceador de carga entre o servidor e seu aplicativo que fecha as conexões após algum período de inatividade. Por exemplo, isso aparentemente acontece na plataforma Azure da Microsoft após 13 minutos sem atividade em um soquete. Você pode corrigir isso usando a opção socketKeepAlive, adicionada no PyMongo 2.8. Observe que você também terá que definir o intervalo keepalive em seu servidor de aplicativos para um valor apropriado (o padrão no Linux é 2 horas). Veja aqui para obter mais informações.