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

PyMongo e multiprocessamento:ServerSelectionTimeoutError


É um bug no pymongo versão 3.0.x. URL do relatório de bug https://jira.mongodb.org/browse/PYTHON-961

Solução alternativa para este problema. (Testado no pymongo 3.0.3) Passe “connect=False” na inicialização do objeto MongoClient
MongoClient(uri, connect=False)

Ou simplesmente espere alguns segundos antes de criar a instância do MongoClient no processo filho (como time.sleep(2)).
def start(uri):
  time.sleep(2)
  mclient = MongoClient(uri)
  mclient.db.collection.find_one()

if __name__ == '__main__':
  p = multiprocessing.Process(target=start, args=('mongodb://localhost:27017/',))
  p.start()