您好我使用本地协程,asyncio motor客户端使用python访问mongo db。我的问题场景是调用insert函数并获取future对象,使用这个返回的future对象来确定发送成功响应说200或失败响应说400.稍后db中的插入应该在后台发生。我希望它能通过事件循环来完成,但我无法为它找到合适的解决方案。
@post(_path="/insert",_types=[TestRequest],
_consumes=Config.APPLICATION_JSON,
_produces=Config.APPLICATION_JSON)
def insertManyDocuments(self,test_req):
try:
collection_name='mycoll'
documents_to_insert=[]
for i in test_req:
documents_to_insert.append(i.__dict__)
future_obj= self.xyz.insertMany(collection_name,documents_to_insert)
status=Status()
if future_obj is None:
status.status_code=404
else:
status.status_code=202
return status
except Exception:
raise Exception
#below code exists in another python file
async def insertMany(self,collection_name,documents_to_insert):
try:
collection=self.database[collection_name]
self.future_obj = collection.insert_many(documents_to_insert)
t=Timer(120.0,self.insertManyFn)
t.start()
return self.future_obj
except Exception:
raise
def insertManyFn(self):
try:
loop=asyncio.get_event_loop()
loop.run_until_complete(self.future_obj)
loop.close()
except Exception:
raise