Какие у тебя есть вопросы по корутинам
Корутины в Python (через asyncio) — мощный инструмент для асинхронного программирования, но с нюансами:
-
Глобальное состояние event loop
Запуск корутин требуетasyncio.run()или явного управления loop. Пример:pythonasync def main(): print("Hello") asyncio.run(main()) # Без этого — RuntimeError -
Блокирующий код
Обычные функции (time.sleep(), синхронные IO) блокируют event loop. Нужно заменять наawait asyncio.sleep().
-
Отмена задач (Task.cancel())
Корутины могут быть отменены, но обработкаCancelledErrorобязательна:pythontry: await some_task except asyncio.CancelledError: print("Task cancelled") -
Ограничения с многопоточностью
asyncioне совместим с классическими потоками безloop.run_in_executor(). -
Цепочки await
Если забытьawaitв корутине, она не выполнится (тихий баг). -
Отладка
Трейсы сложнее из-за чередования корутин. Помогаетasyncio.debug = True. -
Живые блокировки
Неправильное использованиеasyncio.Futureили бесконечные циклы безawaitмогут "заморозить" приложение. -
Совместимость с синхронным кодом
Вызовasyncioиз синхронного кода требует осторожности (например, черезasyncio.run_coroutine_threadsafe()).

офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру