При остановке сначала прекратите принимать новую работу, затем ограниченно дождитесь активных задач, отмените оставшиеся и дождитесь их cleanup. Простого вызова cancel недостаточно.
Вы хорошо описали управление задачами и корректное завершение. А как вы контролируете незавершённые операции AsyncIO при остановке приложения?
При остановке сначала прекратите принимать новую работу, затем ограниченно дождитесь активных задач, отмените оставшиеся и дождитесь их cleanup. Простого вызова cancel недостаточно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При остановке сначала прекратите принимать новую работу, затем ограниченно дождитесь активных задач, отмените оставшиеся и дождитесь их cleanup. Простого вызова cancel недостаточно.
Храните ссылки на созданные задачи или используйте структурированную группу. После отмены соберите результаты и исключения через await/gather, освобождайте ресурсы в finally и не проглатывайте CancelledError без причины. Задайте общий deadline shutdown. Уже выполняющийся поток, внешний запрос или транзакция могут требовать собственной стратегии остановки и восстановления.