Streaming API

aiohttp uses streams for retrieving BODIES: aiohttp.web.BaseRequest.content and aiohttp.ClientResponse.content are properties with stream API.

class aiohttp.StreamReader

The reader from incoming stream.

User should never instantiate streams manually but use existing aiohttp.web.BaseRequest.content and aiohttp.ClientResponse.content properties for accessing raw BODY data.

Reading Methods

Asynchronous Iteration Support

Stream reader supports asynchronous iteration over BODY.

By default it iterates over lines:

async for line in response.content:
    print(line)

Also there are methods for iterating over data chunks with maximum size limit and over any available data.

Helpers

StreamReader.exception()

Get the exception occurred on data reading.

aiohttp.is_eof()

Return True if EOF was reached.

Internal buffer may be not empty at the moment.

StreamReader.at_eof()

Return True if the buffer is empty and EOF was reached.

StreamReader.read_nowait(n=None)

Returns data from internal buffer if any, empty bytes object otherwise.

Raises RuntimeError if other coroutine is waiting for stream.

Parameters

n (int) – how many bytes to read, -1 for the whole internal buffer.

Return bytes

the given data

StreamReader.unread_data(data)

Rollback reading some data from stream, inserting it to buffer head.

Parameters

data (bytes) – data to push back into the stream.

Warning

The method does not wake up waiters.

E.g. read() will not be resumed.