Skip to content

Upgrading aiohttp 0.20 to 0.21

Breaking0.20.2 → 0.21.6Breaking2Deprecated4New11Changed9Fixed7Other6

BreakingUpgrade verdict

2 breaking changes.

  • The keyword argument used when parsing JSON request bodies has a new name, so code passing the old name breaks.
  • Closing a client session or connector now returns a coroutine, so code must await it.
  • The old finish hooks are deprecated; use the on_cleanup signal instead.
  • The module-level request helpers are deprecated.
Top 5 of 6 that need code or config changes
Breaking2
Renames the loader keyword argument in the web.Request.json method.
web.Request.jsonloader
ClientSession.close and Connector.close are coroutines now and must be awaited.
ClientSession.closeConnector.close
Deprecated4
Deprecates Application.finish() and Application.register_on_finish() in favor of on_cleanup.
Application.finish()Application.register_on_finish()on_cleanup
Deprecates bare aiohttp.request(), aiohttp.get() and family.
aiohttp.request()aiohttp.get()
Deprecates app.router.register_route().
app.router.register_route()
Deprecates app.router.named_routes() in favor of app.router.named_resources().
app.router.named_routes()app.router.named_resources()

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • removed: property AbstractMatchInfo.handler
  • removed: property AbstractMatchInfo.route
  • added: method AbstractMatchInfo.expect_handler(request)
  • added: method AbstractMatchInfo.get_info()
  • added: method AbstractMatchInfo.handler(request)
  • added: property AbstractMatchInfo.http_exception
  • changed: constructor ClientSession(*, connector=…, loop=…, cookies=…, headers=…, skip_auto_headers=…, auth=…, request_class=…, response_class=…, ws_response_class=…) → constructor ClientSession(*, connector=…, loop=…, cookies=…, headers=…, skip_auto_headers=…, auth=…, request_class=…, response_class=…, ws_response_class=…, version=…)
  • added: property ClientSession.version
  • added: field ClientResponse.raw_headers
  • changed: constructor TCPConnector(*, verify_ssl=…, fingerprint=…, resolve=…, use_dns_cache=…, family=…, ssl_context=…, **kwargs) → constructor TCPConnector(*, verify_ssl=…, fingerprint=…, resolve=…, use_dns_cache=…, family=…, ssl_context=…, local_addr=…, **kwargs)
  • added: method StreamReader.unread_data(data)
  • added: function main(argv)
  • added: function run_app(app, *, host=…, port=…, shutdown_timeout=…, ssl_context=…, print=…)
  • added: method Application.cleanup()
  • added: method Application.shutdown()
  • added: property Application.on_cleanup
  • added: property Application.on_shutdown
  • removed: property Request.cookies
  • removed: property Request.headers
  • removed: property Request.host
  • removed: property Request.if_modified_since
  • removed: property Request.keep_alive
  • removed: property Request.method
  • removed: property Request.path_qs
  • removed: property Request.raw_path
  • removed: property Request.version
  • changed: constructor Request(app, message, payload, transport, reader, writer, *, _HOST=…, secure_proxy_ssl_header=…) → constructor Request(app, message, payload, transport, reader, writer, *, secure_proxy_ssl_header=…)
  • changed: method Request.json(*, loader=…) → method Request.json(*, loads=…, loader=…)
  • added: method Request.cookies()
  • added: method Request.headers()
  • added: method Request.host()
  • added: method Request.if_modified_since(_IF_MODIFIED_SINCE=…)
  • added: method Request.keep_alive()
  • added: method Request.method()
  • added: method Request.path_qs()
  • added: method Request.raw_headers()
  • added: method Request.raw_path()
  • added: method Request.version()
  • removed: field UrlDispatcher.METHODS
  • removed: method Route.handle_expect_header(request)
  • removed: method Route.url(**kwargs)
  • removed: property Route.handler
  • removed: property Route.method
  • changed: class Route → class Route(AbstractRoute)
  • added: class AbstractResource(Sized, Iterable)
  • added: class AbstractRoute
  • added: class DynamicResource(Resource)
  • added: class PlainResource(Resource)
  • added: class Resource(AbstractResource)
  • added: class ResourceAdapter(AbstractResource)
  • added: class ResourceRoute(AbstractRoute)
  • added: constructor AbstractResource(*, name=…)
  • added: constructor AbstractRoute(method, handler, *, expect_handler=…, resource=…)
  • added: constructor DynamicResource(pattern, formatter, *, name=…)
  • added: constructor PlainResource(path, *, name=…)
  • added: constructor Resource(*, name=…)
  • added: constructor ResourceAdapter(route)
  • added: constructor ResourceRoute(method, handler, resource, *, expect_handler=…)
  • added: field AbstractRoute.METHODS
  • added: method AbstractResource.get_info()
  • added: method AbstractResource.resolve(method, path)
  • added: method AbstractResource.url(**kwargs)
  • added: method AbstractRoute.get_info()
  • added: method AbstractRoute.handle_expect_header(request)
  • added: method AbstractRoute.url(**kwargs)
  • added: method DynamicResource.get_info()
  • added: method DynamicResource.url(*, parts, query=…)
  • added: method DynamicRoute.get_info()
  • added: method PlainResource.get_info()
  • added: method PlainResource.url(*, query=…)
  • added: method PlainRoute.get_info()
  • added: method Resource.add_route(method, handler, *, expect_handler=…)
  • added: method Resource.register_route(route)
  • added: method Resource.resolve(method, path)
  • added: method ResourceAdapter.get_info()
  • added: method ResourceAdapter.resolve(method, path)
  • added: method ResourceAdapter.url(**kwargs)
  • added: method ResourceRoute.get_info()
  • added: method ResourceRoute.url(**kwargs)
  • added: method StaticRoute.get_info()
  • added: method UrlDispatcher.add_resource(path, *, name=…)
  • added: method UrlDispatcher.named_resources()
  • added: method UrlDispatcher.resources()
  • added: method UrlMappingMatchInfo.get_info()
  • added: property AbstractResource.name
  • added: property AbstractRoute.handler
  • added: property AbstractRoute.method
  • added: property AbstractRoute.name
  • added: property AbstractRoute.resource
  • added: property ResourceRoute.name
  • added: property UrlMappingMatchInfo.expect_handler
  • added: property UrlMappingMatchInfo.http_exception
  • changed: method GunicornWebWorker.make_handler(app, host, port) → method GunicornWebWorker.make_handler(app)