sql >> データベース >  >> NoSQL >> MongoDB

PyMongoとマルチプロセッシング:ServerSelectionTimeoutError

    pymongoバージョン3.0.xのバグです。バグレポートのURL https://jira.mongodb.org/browse/PYTHON-961 >

    この問題の回避策。 (pymongo 3.0.3でテスト済み)MongoClientオブジェクトの初期化で「connect=False」を渡します

    MongoClient(uri, connect=False)
    

    または、子プロセスでMongoClientのインスタンスを作成する前に数秒待つだけです(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()
    



    1. mongoDB / mongoose:nullでない場合は一意

    2. mongodbnum_rowsと同等のphp

    3. 同時実行性-スレッドセーフな方法でJavaを介して挿入されたオブジェクトのMongoDBで生成されたIDを取得する

    4. Resque、Resque Server、RedisToGoとHeroku