"찾기"는 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)
다양한 입력 :
그래서 내가 좋아하는 뭔가를 제안한다! 감사. –