Да. create_task() планирует задачу, но если loop завершится, задачу отменят или её жизненным циклом никто не управляет, полезная работа может не выполниться. Само отсутствие await не гарантирует ни запуск, ни завершение.
Может ли задача, созданная через create_task без await, не исполниться?
Да. create_task() планирует задачу, но если loop завершится, задачу отменят или её жизненным циклом никто не управляет, полезная работа может не выполниться. Само отсутствие await не гарантирует ни запуск, ни завершение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Да. create_task() планирует задачу, но если loop завершится, задачу отменят или её жизненным циклом никто не управляет, полезная работа может не выполниться. Само отсутствие await не гарантирует ни запуск, ни завершение.
В обычном сценарии task получает возможность работать, когда управление возвращается event loop. asyncio.run() при выходе из главной coroutine завершает оставшиеся задачи, а не ждёт произвольную фоновую работу бесконечно. Сохраняйте ссылки на задачи, наблюдайте ошибки и явно ожидайте завершения либо организуйте управляемый shutdown. Порядок начала также зависит от task factory: eager-режим может начать выполнение сразу.