NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #49 most downloaded on PyPI
Async http client/server framework (asyncio)
Last release 2 months ago
23 Jul 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
7 versions withdrawn
withdrawn after publishing
13 years old
312 releases · first in 2013
Nothing published for this version
Fixed link to documentation: now http://aiohttp.readthedocs.io/en/v0.21.6/ works
Fixed link to documentation: now http://aiohttp.readthedocs.io/en/v0.21.6/ works
One column per quarter.
Fix command line arg parsing (#797 _)
Fix command line arg parsing (#797)
Minor release, has a couple of bug fixes
Minor release, has a couple of bug fixes
Fix ResourceAdapter: don't add method to allowed if resource is not match (#826)
Fix Resource: append found method to returned allowed methods
Bugfix release for fixing subtle regression
Bugfix release for fixing subtle regression
Bugfix release to restore aiohttp_debugtoolar functionality.
Bugfix release to restore aiohttp_debugtoolar functionality.
router.resources() viewDeprecate Application.finish() / Application.register_on_finish() in favor of on_cleanup.
The release has many changes, most interesting are:
Connection: keep-alive for HTTP 1.0 onlyConnection header for HTTP 1.1Connection: close for HTTP 1.1 onlyConnection header for HTTP 1.0$ python -m aiohttp.web package.main #740loader keyword argument in web.Request.json method. #646The main reason for making the release is fixing memory leak #723 -- very old, small but annoying problem.
aiohttp 0.20.2 bugfix
The main reason for making the release is fixing memory leak #723 -- very old, small but annoying problem.
Couple minor fixed was published also.
await for a class based view #717Bugfix release, mostly for fixing benoitc/gunicorn#1055
Bugfix release, mostly for fixing benoitc/gunicorn#1055
Remove one and a half years long deprecated ClientResponse.read_and_close() method
The release has many optimizations as well as other improvements and bug fixes.
parse_remote_addr() #708async for support for websockets and client multiparts, support redirects history for client requests, Timeout context manager for limiting execution
Major aiohttp 0.19.0 release
async for support for websockets and client multiparts,
support redirects history for client requests,
Timeout context manager for limiting execution time of inner block.
max_requests settings in gunicorn workerasync for implementation to server websocket #543async for implementation to client websocketasync with implementation to client websocketRelax rule for router names again by adding dash to allowed characters: they may contain identifiers, dashes, dots and columns
Bugfix release.
Fix formatting for _RequestContextManager helper #590
Fix formatting for _RequestContextManager helper (#590)
Bugfix release, fixes regression with usage OpenSSL < 1.0.0 #584
Bugfix release, fixes regression with usage OpenSSL < 1.0.0 #584
Relax rule for router names: they may contain dots and columns starting from now
0.18.1 bugfix release
ClientResponse.close() forces connection closing by default from now #479 N.B. Backward incompatible change: was .close(force=False) Usingforceparamet…
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:
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
The main change is making code pep-492 compatible. So you can use await in client API, e.g.:
Minor aiohttp release.
The main change is making code pep-492 compatible. So you can use await in client API, e.g.:
async def getter(url):
resp = await aiohttp.get(url)
try:
text = await resp.read()
return text
finally:
await resp.release()
Properly parse URL path in aiohttp.web.Request (#489)
Add missing coroutine decorator, the client api is await-compatible now
Remove Content-Length header on compressed responses #450
aiohttp 0.17.3 bugfix release
Don't forget to pass data argument forward #462
Bugfix release
data argument forward #462Bugfix release Fixed multidict comparison
Bugfix release
Fixed multidict comparison (c727d25d328dbd3ddca5b8708aab28b9e6229416)
Actually it doesn't introduce many new features but has a lot of bug fixes.
Actually it doesn't introduce many new features but has a lot of bug fixes.
get(), post(), put(), head(), delete(), options(),
patch() coroutinesClientSession for session closing.StaticRoute supporting Last-Modified and If-Modified-Since headersAlso please take a look on documentation: http://aiohttp.readthedocs.org/en/stable/ now has a comment section (powered by disqus) on the bottom of every page. We hope your comments will increase docs quality very well.
Skip compilation on Windows if vcvarsall.bat cannot be found #438
The release finally fixes all issues in multidicts related to Cython but for removing current exception if present.
The release finally fixes all issues in multidicts related to Cython but for removing current exception if present.
The fixed bug is important enough: it may lead to Python interpreter crash with segfault in some cases. aiohttp development team strongly recommends upgrading to new version.
See #410 for details.
Don't clear current exception in multidict's __repr__ (cythonized versions) #410
__repr__ (cythonized versions) #410The fixed bug is fairly serious: it may lead to Python interpreter crash with segfault in some cases. aiohttp development team strongly recommends upgrading to new version.
See #410 for details.
Fix StaticRoute vulnerability to directory traversal attacks #380
Bugfix release, restore support for asyncio 3.4.0.
Bugfix release, restore support for asyncio 3.4.0.
__del__ usage: it's actially
3.4.1 instead of 3.4.0Bugfix release for fixing regression in static file handling #377
Bugfix release for fixing regression in static file handling #377
Major release, new features added.
Major release, new features added.
Client API refactored a bit, ClientSession is first-class citizen now and highly recommended to use instead of aiohttp.request.
Full list of changes:
fingerprint param of TCPConnector to enable verifying
ssl certificates via md5, sha1, or sha256 digest #366ClientSession.close() methodconnector.closed readonly propertyClientSession.closed readonly propertyClientSession.connector readonly propertyClientSession.detach method__del__ to client-side objects: sessions, connectors,
connections, requests, responses.limit parameter to connector constructor #358request.has_body property #364response_class parameter to ws_connect() #367ProxyConnector doesn't support keep-alive requests by default
starting from now #368connector.force_close propertychunk_size parameter in router.add_static()Fix Expect header handling for not found and not allowed routes #340
Expect header handling for not found and not allowed routes #340I am happy to announce new release of aiohttp. We did a lot of performance optimizations for new release. It should be 50-70% faster in raw performanc
I am happy to announce new release of aiohttp. We did a lot of performance optimizations for new release. It should be 50-70% faster in raw performance than previous version. Numbers look very cool, but for those who uses aiohttp in production situation slightly different, it won't give more than 1-2% of performance increase.
*keep_alive_on argument for http server handler.Fixed websocket close procedure
timeout parameter to WebSocketResponse ctorWebSocketResponse.close_code attributePass Autobahn Testsuite tests
Fixed websocket fragmentation
Fixed websocket close procedure
Fixed parser buffer limits
Added timeout parameter to WebSocketResponse ctor
Added WebSocketResponse.close_code attribute
With 0.15.0 release we are very close to 1.0 version.
With 0.15.0 release we are very close to 1.0 version.
aiohttp now supports client side websockets. Server side websockets support has been refactored. I think web sockets api is stable now. Also we introduced new multipart system, client side for now but we are working on server side integration as well. New version of aiohttp now supports Except header out of box. Thanks all contributors for hard work!
Enjoy!
Fix issue with error during constructing of url with regex parts #264
Use path='/' by default for cookies #261
Connections leak in BaseConnector #253
We have finished a hard work to stabilize aiohttp.web now.
0.14 is the great release.
We have finished a hard work to stabilize aiohttp.web now.
Almost any new wish appeared in our mind may be implemented with the current code by third-party libraries: CORS, sessions, authorization, rendering and so on without the need for making changes in aiohttp itself.
That's a very strong sign on aiohttp.web design: the library is good and it is as tiny as possible.
aiohttp.web.WebSocketResponsegetall parameter anymore, it
returns the full body anyway.list, not tuple.MultiDict, CIMultiDict) and two immutable multidict proxies
(MultiDictProxy and CIMultiDictProxy). Previous edition of
multidicts was not a part of public API BTW.ConnectionError to aiohttp.DisconnectedError and don't
eat ConnectionError exceptions from web handlers.deflate encoding.**kwargs anymore (#243).Nothing published for this version
Add aiohttp.web.StreamResponse.started property #213
aiohttp.web.StreamResponse.started property #213ServerHttpProtocol.handle_erroraiohttp.web.RequestHandler.handle_request
on error (#218)StreamResponse.charset converts value to lower-case on assigning.
aiohttp 0.13 major release
StreamResponse.charset converts value to lower-case on assigning.ClientRequestError.utf-8 encoding, some servers send headers in utf-8 encoding #207aiohtt.web middlewares #209Removed deprecated AsyncGunicornWorker
aiohttp.web in backward-incompatible manner.
Sorry, we have to do this.UrlDispatcher.add_route() #186Request.POST() function to Request.post()aiohttp.web.RequestRequestHandle.handle_request()aiohttp.webaiohttp.webAsyncGunicornWorkerAdded named routes with building url by route name.
aiohttp 0.11.0 major relase.
Added named routes with building url by route name.
aiohttp.web.UrlDispatcher #179aiohttp 0.10.2 minor bugfix release.
aiohttp 0.10.2 minor bugfix release.
environ['PATH_INFO'] in wsgi.py #177aiohttp 0.10.1 minor bugfix release.
aiohttp 0.10.1 minor bugfix release.
404: NotFound__iter__ regression, the method should iterate over keys, not (key, value) pairs.aiohttp 0.10.0 is a major release.
aiohttp 0.10.0 is a major release.
The main feature is brand new aiohttp.web package.
We made several minor tweaks and bugfixes also.
aiohttp 0.9.3 is a minor bugfix release, issued to fix compatibility problems with asyncio 3.4.1+
aiohttp 0.9.3 is a minor bugfix release, issued to fix compatibility problems with asyncio 3.4.1+
aiohttp 0.9.2 is a minor bugfix release.
aiohttp 0.9.2 is a minor bugfix release.
Added MultiDict support for client request params and data (#114 _).
Backward incompatible: Replace DataQueue with StreamReader for request payload (#87 _).
Change ProxyConnector authorization parameters.
Change ProxyConnector authorization parameters.
Publish TCPConnector properties: verify_ssl, family, resolve, resolved_hosts.
Publish TCPConnector properties: verify_ssl, family, resolve, resolved_hosts.
Don't parse message body for HEAD responses.
Refactor client response decoding.
Make ProxyConnector.proxy immutable property.
Make ProxyConnector.proxy immutable property.
Make UnixConnector.path immutable property.
Fix resource leak for aiohttp.request() with implicit connector.
Rename Connector's reuse_timeout to keepalive_timeout.
Use case insensitive multidict for server request/response headers.
Use case insensitive multidict for server request/response headers.
MultiDict.getall() accepts default value.
Catch server ConnectionError.
Accept MultiDict (and derived) instances in aiohttp.request header argument.
Proxy 'CONNECT' support.
Add support for utf-8 values in HTTP headers
Add support for utf-8 values in HTTP headers
Allow to use custom response class instead of HttpResponse
Use MultiDict for client request headers
Use MultiDict for server request/response headers
Store response headers in ClientResponse.headers attribute
Get rid of timeout parameter in aiohttp.client API
Exceptions refactoring
- Simple HTTP proxy support. ----
Simple HTTP proxy support.
Use ResourceWarning instead of logging warning record.
Get rid of __del__ methods
Use ResourceWarning instead of logging warning record.
Do not unquote client request urls.
Do not unquote client request urls.
Allow multiple waiters on transport drain.
Do not return client connection to pool in case of exceptions.
Rename SocketConnector to TCPConnector and UnixSocketConnector to UnixConnector.
HTTP client session/connection pool refactoring.
Connection flow control.
HTTP client session/connection pool refactoring.
Better handling for bad server requests.
Added client session reuse timeout.
Added client session reuse timeout.
Better client request cancellation support.
Better handling responses without content length.
Added HttpClient verify_ssl parameter support.
Log content-length missing warning only for put and post requests.
Log content-length missing warning only for put and post requests.
Better support for server exit.
Better support for server exit.
Read response body until EOF if content-length is not defined (#14)
Your coding agent can read these notes before it upgrades. Set up the MCP server →