asyncio.gather not executing tasks when caller function requests input from STDIN?

You need to await the asyncio, and you need to pass it multiple arguments, not a list.

await asyncio.gather(*(t() for t in tasks))