3.9.0b0
Pre-releaseFeatures
-
Introduced
AppKey
for static typing support ofApplication
storage.
See https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config(#5864)
-
Added a graceful shutdown period which allows pending tasks to complete before the application's cleanup is called.
The period can be adjusted with theshutdown_timeout
parameter. -- by :user:Dreamsorcerer
.
See https://docs.aiohttp.org/en/latest/web_advanced.html#graceful-shutdown(#7188)
-
Added
handler_cancellation <https://docs.aiohttp.org/en/stable/web_advanced.html#web-handler-cancellation>
_ parameter to cancel web handler on client disconnection. -- by :user:mosquito
This (optionally) reintroduces a feature removed in a previous release.
Recommended for those looking for an extra level of protection against denial-of-service attacks.(#7056)
-
Added support for setting response header parameters
max_line_size
andmax_field_size
.(#2304)
-
Added
auto_decompress
parameter toClientSession.request
to overrideClientSession._auto_decompress
. -- by :user:Daste745
(#3751)
-
Changed
raise_for_status
to allow a coroutine.(#3892)
-
Added client brotli compression support (optional with runtime check).
(#5219)
-
Added
client_max_size
toBaseRequest.clone()
to allow overriding the request body size -- :user:anesabml
.(#5704)
-
Added a middleware type alias
aiohttp.typedefs.Middleware
.(#5898)
-
Exported
HTTPMove
which can be used to catch any redirection request
that has a location -- :user:dreamsorcerer
.(#6594)
-
Changed the
path
parameter inweb.run_app()
to accept apathlib.Path
object.(#6839)
-
Added support for passing a custom server name parameter to HTTPS connection.
(#7114)
-
Added support for using Basic Auth credentials from :file:
.netrc
file when making HTTP requests with the :py:class:~aiohttp.ClientSession
trust_env
argument is set toTrue
-- by :user:yuvipanda
.(#7131)
-
Turned access log into no-op when the logger is disabled.
(#7240)
-
Added typing information to
RawResponseMessage
-- by :user:Gobot1234
(#7365)
-
Removed
async-timeout
for Python 3.11+ (replaced withasyncio.timeout()
on newer releases).(#7502)
-
Added support for
brotlicffi
as an alternative tobrotli
(fixing Brotli support on PyPy).(#7611)
Bugfixes
-
Implemented stripping the trailing dots from fully-qualified domain names in
Host
headers and TLS context when acting as an HTTP client.
This allows the client to connect to URLs with FQDN host name likehttps://example.com./
.
-- by :user:martin-sucha
.(#3636)
-
Fixed client timeout not working when incoming data is always available without waiting -- by :user:
Dreamsorcerer
.(#5854)
-
Fixed
readuntil
to work with a delimiter of more than one character(#6701)
-
Added
__repr__
toEmptyStreamReader
to avoidAttributeError
.(#6916)
-
Fixed bug when using
TCPConnector
withttl_dns_cache=0
.(#7014)
-
Fixed response returned from expect handler being thrown away. -- by :user:
Dreamsorcerer
(#7025)
-
Avoided raising
UnicodeDecodeError
in multipart and in HTTP headers parsing.(#7044)
-
Changed
sock_read
timeout to start after writing has finished, avoiding read timeouts caused by an unfinished write. -- by :user:dtrifiro
(#7149)
-
Fixed missing query in tracing method URLs when using
yarl
1.9+.(#7259)
-
Changed max 32-bit timestamp to an aware datetime object, for consistency with the non-32-bit one, and to avoid a
DeprecationWarning
on Python 3.12.(#7302)
-
Fixed
EmptyStreamReader.iter_chunks()
never ending. -- by :user:mind1m
(#7616)
Improved Documentation
-
Fixed the
ClientResponse.release
's type in the doc. Changed fromcomethod
tomethod
.(#5836)
-
Added information on behavior of base_url parameter in
ClientSession
.(#6647)
-
Fixed
ClientResponseError
docs.(#6700)
-
Updated Redis code examples to follow the latest API.
(#6907)
-
Added a note about possibly needing to update headers when using
on_response_prepare
. -- by :user:Dreamsorcerer
(#7283)
-
Completed
trust_env
parameter description to honorwss_proxy
,ws_proxy
orno_proxy
env.(#7325)
-
Expanded SSL documentation with more examples (e.g. how to use certifi). -- by :user:
Dreamsorcerer
(#7334)
Deprecations and Removals
-
Dropped Python 3.6 support.
(#6378)
-
Dropped Python 3.7 support. -- by :user:
Dreamsorcerer
(#7336)
-
Removed support for abandoned
tokio
event loop. -- by :user:Dreamsorcerer
(#7281)
Misc
-
Made
print
argument inrun_app()
optional.(#3690)
-
Improved performance of
ceil_timeout
in some cases.(#6316)
-
Changed importing Gunicorn to happen on-demand, decreasing import time by ~53%. -- :user:
Dreamsorcerer
(#6591)
-
Improved import time by replacing
http.server
withhttp.HTTPStatus
.(#6903)
-
Fixed annotation of
ssl
parameter to disallowTrue
. -- by :user:Dreamsorcerer
(#7335)