"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)
グレート入力:
は、だから私のようなものを提案します!ありがとう。 –