Почему не выполняется часть функции после asyncio.sleep()?

Перелопатил уже кучу "литературы" и никак не могу понять: Почему если убрать строку await task из функции main(), то функция foo() выполняется только до asyncio.sleep(1), а если оставить await task, то функция выполняется целиком: Разве не должна фнукция foo() выполниться так же целиком, но просто после выполнения main() ?

import asyncio as ao


async def foo(number):
    print(f'foo  {number}')
    await ao.sleep(1)
    print('SOMETHING')

async def main():
    print('start')
    task = ao.create_task(foo(999))
    await task
    print('finish')


ao.run(main())

Заранее спасибо!


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

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

Функция main завершается и цикл ожидания, созданный ao.run(), то же прекращается. А без рабочего цикла ожидания уже ничего работать не может (некому понять, что sleep закончился и запустить продолжение корутины)

→ Ссылка