как подружить async с классам?

можно ли как то запустить класс в asyncio? Есть утрированный код:

import asyncio
class ODB:
    def __init__(self, db):
        self.db = db
        self.table = None

    def get_end_time(self, ids, name):
        some_list = ["VOLG","TOMSK", "PERM"]
        if self.db in some_list:
            time.sleep(3)
            return time.time(), " it's ok ", self.db


async def run(info):                            
    o_db = ODB(info)
    values = await o_db.get_end_time("'1674', '1675', '9362'","'06_2022','05_2022'")
    return values

loop = asyncio.get_event_loop()
tasks = [loop.create_task(run("VOLG")), loop.create_task(run("TOMSK"))]
done, _ = loop.run_until_complete(asyncio.wait(tasks))

print(done)     
loop.close()

Сейчас код не работает из-за values = await o_db.get_end_time. Как можно одновременно вызвать создание двух классов с последующим асинхронным выполнением?


Ответы (1 шт):

Автор решения: re1von

Вы можете сделать это с помощью asyncio.gather(...).

Например, вместо этого:

loop.run_until_complete(asyncio.wait(tasks))

Используйте это:

loop.run_until_complete(asyncio.gather(*tasks))
→ Ссылка