Meaning
Iterates asynchronously over an asynchronous iterable, awaiting each item as it becomes available. Use when you need to process items from an async source such as an async generator, network stream, or async queue without blocking the event loop.
Primary Function
Asynchronous iteration
Communicative Purpose
Process items from an async iterable sequentially while yielding control back to the event loop between items.
Pattern
async for item in async_iterable:
Core Structure
async for ... in ...:
Função primária
Asynchronous iteration
Propósito comunicativo
Process items from an async iterable sequentially while yielding control back to the event loop between items.
Situações de gatilho
Reading lines from an async file stream; consuming messages from an async queue; iterating over results of an async API call that returns an async generator.
Contextos
Python asyncio applications, web servers, data pipelines, any code using async/await.
Padrão
async for item in async_iterable:
Estrutura central
async for ... in ...:
Slots de substituição
item: identifier, async_iterable: expression returning an async iterable
Colocados típicos
- await
- async def
- async with
- async generator functions
- async queues
Substituições comuns
- Manual iteration with `aiter()` and `anext()` (more control but verbose)
- async comprehension `[item async for item in async_iterable]` (collects all items eagerly
- losing streaming benefit)
Erros comuns
Forgetting that the loop body must be async (cannot use regular functions that block); using a synchronous iterable causing TypeError; not handling cancellation properly.
Similar / contraste
Regular `for` loop (synchronous iteration); `async for` with `asyncio.gather` for concurrent processing; `while` loop with `await anext()`
Interferências
Coming from languages with only synchronous loops (e.g., Java, C#): may expect `for` to work on async iterables without `await`; need to remember to use `async for`.
Família do chunk
- async iteration
- async generators
- async context managers
- async comprehensions
Nuance
The loop will cancel if the enclosing task is cancelled; if the async iterable raises an exception, it propagates; avoid using `async for` with infinite async iterables without a break condition.
Efeito pragmático
Enables non-blocking processing of asynchronous data streams, preventing event loop stalls.
Dica de memória
Think 'async for' as 'await each item in turn'.
Nota
Requires Python 3.5+ due to PEP 492 (coroutines with async/await).
Upgrade path
async for item in async_iterable: await process(item)
Log in to save chunks.