Я пытаюсь реализовать asyncio в ранее работающей программе, но мои функции возвращают сопрограммы вместо ожидаемых объектов.
Пример:
async def requester(things):
async def adder(item):
output = {}
output['timestamp'] = datetime.datetime.now().timestamp()
output['key'] = item
return output
to_insert = []
for thing in things:
to_insert.append(adder(thing))
mongodbcollection.insert_many(to_insert) # This throws the error
loop = asyncio.get_event_loop()
loop.run_until_complete(requester(['a', 'b', 'c']))
В этом примере вместо объекты возвращаются из функции сумматора, сопрограммы возвращаются, и, естественно, когда я пытаюсь вставить их в базу данных, он выдает TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping
. В каждой из этих функций происходят другие асинхронные вещи, поэтому они асин c. Как я могу заставить эту внутреннюю функцию возвращать объект как задумано?