2016-12-02 13 views

答えて

1

"find"はPyMongoカーソルを作成し、それ以上動作しません。 "find"はMongoDBサーバーにメッセージを送信せず、結果を取得しません。

for doc in cursor: 
    print(doc) 

または::

all_docs = list(cursor) 

だから、あなたがそれをやっている方法は、すでに間違っている:あなたは、スレッドに作業を延期しているあなたは、このようにカーソルを反復しない限り、作業は開始されません。 ではないは、ネットワークI/Oを実行しないため、延期する必要があります。しかし、あなたはを実行するメインスレッド上でカーソルを使用しています。を延期する必要があります。

def find_all(): 
    # find_one() actually does network I/O 
    doc1 = self.mongo_pool.database[collection].find_one(self.my_id) 
    # creating a cursor does no I/O 
    cursor = self.mongo_pool.database[collection].find().limit(3) 
    # calling list() on a cursor does network I/O 
    return doc1, list(cursor) 

stuff_deferred = deferToThread(find_all) 
+0

グレート入力:

は、だから私のようなものを提案します!ありがとう。 –

関連する問題