Upgrading aiohttp 0.20 to 0.21
Breaking0.20.2 → 0.21.6Breaking2Deprecated4New11Changed9Fixed7Other6
BreakingUpgrade verdict
2 breaking changes.
In plain terms
- 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.
Must act Top 5 of 6 that need code or config changes
What you must change
Breaking2
Renames the loader keyword argument in the web.Request.json method.
web.Request.jsonloaderClientSession.close and Connector.close are coroutines now and must be awaited.
ClientSession.closeConnector.closeDeprecations to plan for
Deprecated4
Deprecates Application.finish() and Application.register_on_finish() in favor of on_cleanup.
Application.finish()Application.register_on_finish()on_cleanupDeprecates 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()API changes
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)