'Proper use of async

I have a main function that doesn't need to be async, but this function calls several other functions that do need to be async.

What would be the better practice: to make main async and call asyncio.run(main()) in if __name__ ... or would it be better to not make main async (it has nothing to do while awaiting) and call asyncio.run() for each async function call made from main?

In other words, something like this:

async def func1():
    await something

async def func2():
    await something

async def main():
    x = input()
    if x == "y":
        await func1()
    else:
        await func2()

if __name__ == "__main__":
    asyncio.run(main())

Or this:

async def func1():
    await something

async def func2():
    await something

def main():
    x = input()
    if x == "y":
        asyncio.run(func1())
    else:
        asyncio.run(func2())

if __name__ == "__main__":
    main()


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source