«find» создает PyMongo Cursor и больше не работает. «find» не отправляет сообщение на сервер MongoDB и не получает никаких результатов. Работа не начинается, если не перебирать курсор так:
for doc in cursor:
print(doc)
Или:
all_docs = list(cursor)
Так как вы делаете это уже не так: вы откладывая в теме работа создания курсора, который делает не, необходимо отложить, поскольку он не выполняет сетевой ввод-вывод. Но вы затем используете курсор на основной поток, который вам нужно отложить. do.
Так я предлагаю что-то вроде:
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)
большой вклад! Благодарю. –