3.8.0
Changed 4
- Bump botocore dependency specification to support botocore >= 1.43.3, < 1.43.47
- Port botocore 1.43.24's long-polling no-retry signal (handler_response is False) through the async retry path so retries don't block the event loop with a synchronous sleep during backoff
- Restructure StreamingBody to subclass botocore.response.StreamingBody (dropping the wrapt.ObjectProxy wrapper) and add full httpx API parity including read(amt), readinto(), readlines(), async iteration, iter_lines()/iter_chunks(), tell(), and close()
- Change AioStreamingBody.__aenter__ to return self instead of the raw aiohttp ClientResponse (use .raw_stream for the underlying response)
Fixed 1
- Fix AIOHTTPSession/HttpxSession blocking the event loop on the first request per proxy by running SSL context creation (certificate loading via load_verify_locations/load_cert_chain) in a thread via asyncio.to_thread instead of directly on the loop
- bump botocore dependency specification to support
"botocore >= 1.43.3, < 1.43.47"(#1605, #1606, #1635, #1651, #1655) - port botocore 1.43.24's long-polling no-retry signal
(
handler_response is False) through the async retry path so retries don't block the event loop with a synchronous sleep during backoff (#1606) - fix
AIOHTTPSession/HttpxSessionblocking the event loop on the first request per proxy: SSL context creation (certificate loading viaload_verify_locations/load_cert_chain) now runs in a thread viaasyncio.to_threadinstead of directly on the loop (closes #1469) (#1587) - restructure
StreamingBodyto subclassbotocore.response.StreamingBody(dropping thewrapt.ObjectProxywrapper) and add fullhttpxAPI parity —read(amt),readinto(),readlines(), async iteration,iter_lines()/iter_chunks(),tell(),close()— whereread(amt)previously raisedValueError; note thatAioStreamingBody.__aenter__now returnsselfinstead of the raw aiohttpClientResponse(use.raw_streamfor the underlying response) (closes #1365) (#1539)