Skip to content

aiohttp 0.18.0

Compare
Choose a tag to compare
@asvetlov asvetlov released this 19 Oct 08:17
· 9209 commits to master since this release

Major aiohttp release.

Added support for async for and async with, e.g.

async with client.get(url) as resp:
    async for line in resp.content:
        print(line)

auto-closes response object and iterates over response's content.

Server-side signals added (allows, for example, setup http headers for long-living responses in signal hook).

Python 3.3 support dropped.

Full list of changes is pretty huge:

Changes

  • Use errors.HttpProcessingError.message as HTTP error reason and
    message #459

  • Optimize cythonized multidict a bit

  • Change repr's of multidicts and multidict views

  • default headers in ClientSession are now case-insensitive

  • Make '=' char and 'wss://' schema safe in urls #477

  • ClientResponse.close() forces connection closing by default from now #479
    N.B. Backward incompatible change: was .close(force=False) Usingforceparameter for the method is deprecated: use.release()` instead.

  • Properly requote URL's path #480

  • add skip_auto_headers parameter for client API #486

  • Properly parse URL path in aiohttp.web.Request #489

  • Raise RuntimeError when chunked enabled and HTTP is 1.0 #488

  • Fix a bug with processing io.BytesIO as data parameter for client API #500

  • Skip auto-generation of Content-Type header #507

  • Use sendfile facility for static file handling #503

  • Default response_factory in app.router.add_static now is
    StreamResponse, not None. The functionality is not changed if
    default is not specified.

  • Drop ClientResponse.message attribute, it was always implementation detail.

  • Streams are optimized for speed and mostly memory in case of a big
    HTTP message sizes #496

  • Fix a bug for server-side cookies for dropping cookie and setting it
    again without Max-Age parameter.

  • Don't trim redirect URL in client API #499

  • Extend precision of access log "D" to milliseconds #527

  • Deprecate StreamResponse.start() method in favor of
    StreamResponse.prepare() coroutine #525

    .start() is still supported but responses begun with .start()
    doesn't call signal for response preparing to be sent.

  • Add StreamReader.__repr__

  • Drop Python 3.3 support, from now minimal required version is Python
    3.4.1 #541

  • Add async with support for ClientSession.request() and family #536

  • Ignore message body on 204 and 304 responses #505

  • TCPConnector processed both IPv4 and IPv6 by default #559

  • Add .routes() view for urldispatcher #519

  • Route name should be a valid identifier name from now #567

  • Implement server signals #562

  • Drop an year-old deprecated files parameter from client API.

  • Added async for support for aiohttp stream #542