Отмена и таймауты asyncio: задачи на cancel, shield и graceful shutdown
При остановке сервиса иногда нужно прервать работу сразу, а иногда — закончить уже начатую операцию. Подборка предлагает реализовать оба сценария и проверить реакцию на повторную отмену. Вы будете работать с CancelledError, таймаутами, shield и завершением воркера после текущей задачи. Важно явно определить границу: какую работу ещё принимаем, какую уже заканчиваем и чего ждёт код остановки.
Как заниматься
5 заданий ниже можно проходить по порядку или выбирать нужную проблему. В заданиях на код есть проверка решения; в вопросах — проверка выбранного ответа. Требования к реализации и примеры приведены на страницах заданий.
Вся практика собрана в бесплатном большом задачнике по Python для разработчиков.
Смежная практика
- Asyncio CancelledError: почему except Exception не ловит отмену
Asyncio CancelledError: почему except Exception не ловит отмену. Вопрос с проверкой ответа.
Практический Python для разработчиков: большой задачник - Asyncio: проверка реакции задачи на cancel() с таймаутом
Asyncio: проверка реакции задачи на cancel() с таймаутом. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Graceful shutdown Python: завершение текущей работы перед остановкой воркера
Graceful shutdown Python: завершение текущей работы перед остановкой воркера. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Asyncio timeout: остановка по таймауту и внешней отмене
Asyncio timeout: остановка по таймауту и внешней отмене. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Asyncio shield: сохранение начатой работы при повторной отмене
Asyncio shield: сохранение начатой работы при повторной отмене. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник
