2016-12-02 9 views

답변

1

"찾기"는 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

다양한 입력 :

그래서 내가 좋아하는 뭔가를 제안한다! 감사. –