Создание сопрограммы не требует больших затрат, но вам все равно нужно предупреждение, чтобы избежать многих проблем, связанных с асинхронностью:
import asyncio
async def main():
# many code
asyncio.sleep(1) # Oops! I forgot to await, but warning will help me to notice that
# many code
asyncio.run(main())
В отличие от генераторов, asyncio полностью основан на предположении, что после создания объект коротина, который вы будете ждать его.
Другими словами, имея дело с asyncio, старайтесь следовать такому принципу: создавайте объект сопрограммы только прямо перед тем, как вы захотите начать его выполнение.
Предлагаемое решение you by @jdehesa, я считаю, это лучший подход в вашем случае.