Почему не выполняется часть функции после 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 закончился и запустить продолжение корутины)