async def process_chunk(chunk: str) -> str:
time.sleep блокирует event loop, поэтому 100 корутин фактически выполнят ожидания последовательно примерно за 10 секунд. gather не делает синхронное блокирующее действие неблокирующим.
Читать ответПодготовка к интервью
148 вопросов по asyncio с технических собеседований
Что проверяют на интервью
На странице собраны вопросы по asyncio — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: asyncio, async, python.
Каталог
time.sleep блокирует event loop, поэтому 100 корутин фактически выполнят ожидания последовательно примерно за 10 секунд. gather не делает синхронное блокирующее действие неблокирующим.
Читать ответСначала прекращайте приём новой работы и организуйте контролируемое завершение зарегистрированных задач до закрытия пула БД. Для гарантии восстановления после убийства Pod нужна сохранённая очередь или запись задания.
Читать ответВ asyncio есть Lock, Event, Condition, Semaphore, BoundedSemaphore и Barrier. Они координируют задачи event loop, но не заменяют потоковые или межпроцессные блокировки.
Читать ответЕсли обе корутины выполняют только CPU-код и не уступают управление, gather не даст параллелизма: суммарное время будет около 20 секунд, плюс накладные расходы.
Читать ответCoroutine-объект описывает приостановляемое вычисление; Task управляет его выполнением, результатом и отменой в event loop. Прямой вызов async-функции ещё не запускает её тело.
Читать ответASGI-сервер передаёт запрос FastAPI, а event loop исполняет coroutine-задачи до точек ожидания. Пока одна задача ждёт неблокирующий I/O, цикл может выполнять другие.
Читать ответОшибка в имени asyncio.Sleep: функция называется sleep с маленькой буквы. После исправления последовательные await займут примерно 5 секунд, а не 3.
Читать ответthreading использует потоки ОС с общей памятью, asyncio — кооперативные задачи в цикле событий. Оба подходят для конкурентного I/O, но по-разному требуют организации кода и ожиданий.
Читать ответEvent Loop Policy исторически управляла созданием и выбором циклов asyncio на уровне процесса. В Python 3.14 этот механизм deprecated; для нового кода используют явную loop_factory или uvloop.run().
Читать ответgather собирает результаты в порядке переданных задач, а as_completed позволяет обрабатывать их по мере завершения. Первый удобен для общего результата, второй — для ранней отдачи и прогресса.
Читать ответEvent loop кооперативно переключает задачи, когда они приостанавливаются на await. Синхронный долгий код в его потоке блокирует остальные задачи независимо от наличия async def.
Читать ответGevent использует кооперативные stackful greenlets, которые могут переключаться глубоко внутри стека вызовов. Asyncio строится на явно асинхронных функциях и точках await.
Читать ответ