Как установить таймаут на выполнение одной корутины?
Ограничить ожидание корутины можно через await asyncio.waitfor(coro(), timeout=5). В Python 3.11+ доступен также контекстный менеджер asyncio.timeout(5).
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Ограничить ожидание корутины можно через await asyncio.waitfor(coro(), timeout=5). В Python 3.11+ доступен также контекстный менеджер asyncio.timeout(5).
Читать ответАсинхронный timeout ждёт завершения задачи до дедлайна, затем запрашивает отмену и корректно освобождает ресурсы. Это кооперативная отмена, а не принудительное завершение потока.
Читать ответtime.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.
Читать ответОжидание завершения потока, результат join, тайм-аут и получение значения через Thread#value.
Читать ответТайм-аут сигнализирует об отмене, но не убивает горутину. Сотрудничающая операция, освобождение ресурсов и ожидание завершения.
Читать ответ