Возникал у меня как-то похожий
вопрос.
Методы вроде __init__ или __new__ вызываются как синхронные __внутри__ питона, поэтому, судя по всему, нет достаточно простой и красивой возможности выполнить их асинхронно. Судя по тому, что
появляются специальные магические методы, которые
могут содержать асинхронный код, асинхронный код в обычныx методах не предусмотрен изначально.
Можно выполнить инициализацию без асинхронности, используя что-то вроде asyncio.gather() или BaseEventLoop.run_until_complete(), но это бессмысленно, т.к. заблокирует остальные задачи.
Я сейчас, в случае необходимости, делаю два метода инициализации, __init__() в котором всё что можно по быстрому выполнить синхронно, и init() который уже асинхронный. Некрасиво,
yield from Class().init()
, но более явно.