sql >> Base de Datos >  >> NoSQL >> MongoDB

PyMongo y multiprocesamiento:ServerSelectionTimeoutError

Es un error en la versión 3.0.x de pymongo. URL del informe de errores https://jira.mongodb.org/browse/PYTHON-961

Solución para este problema. (Probado en pymongo 3.0.3) Pase "connect=False" en la inicialización del objeto MongoClient

MongoClient(uri, connect=False)

O simplemente espere unos segundos antes de crear una instancia de MongoClient en el proceso secundario (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()