Comments (2)
However, I am not familiar with the internals of the aiohttp libray, I am not sure if both methods need to be patched, one only or none (different fix needed).
Its likely both since the cancellation of the writer shouldn't be leaking upward
from aiohttp.
It looks like this refactoring would also allow to simplify the code of the write_bytes
method underlying the _writer
task:
aiohttp/aiohttp/client_reqrep.py
Line 557 in 006fbe0
This method catches CancelledError which would be useless with the new mechanism described above. Also, this method seems to catch other errors, but not completely. In some cases, it exposes itself to new exception being raised, e.g. in
aiohttp/aiohttp/client_reqrep.py
Line 584 in 006fbe0
and
aiohttp/aiohttp/client_reqrep.py
Line 594 in 006fbe0
So there seems to be an unconsistent mix of behaviors regarding exceptions handling/raising. But maybe connection management (ie detecting broken connections and bubbling up these I/O errors) make it necessary.
Reading the entire class, it looks like there is a lot of complexity around the _writer task to work around the various cases. Maybe all this _writer code could be simplified by using a clean single callback connected to the task, together with a Future, to handle properly the various task exit cases.
I am definitely not versed enough in this repository to guess what would be the correct change to perform to align all this on a single, simple behavior.
from aiohttp.
Related Issues (20)
- Detailed TimeoutError message not captured when handling asyncio.TimeoutError in aiohttp HOT 8
- after upgrading from 3.8.6 to 3.9.* can't use middlewares anymore HOT 3
- Abrupt client websocket connection loss results in `close_code = OK` HOT 2
- Python package aiohttp>=3.9.2 break azure-keyvault-certificates package's get_certificate functionality HOT 5
- ClientWebSocketResponse.closed is False but WebSocketWriter.transport.is_closing() is True
- CancelledError suppressed where it should not HOT 4
- Building wheel for aiohttp (pyproject.toml) did not run successfully.γ βwhen I enterd pip install chess.com in command prompt HOT 5
- wrong server shutdown order? HOT 14
- request tuto/method how to debug unclosed sessions on exit HOT 7
- 404 returned if only compressed file exists
- loop.run_forever terminated by exception HOT 4
- web_ws - Can't close tcp socket when receiving a close message from client. HOT 18
- Large payloads lead to BrokenPipe inside a request context manager HOT 1
- OSError : bind(): bad family HOT 1
- Error upon attempt to download https://dieunbestechlichen.com/feed HOT 3
- aiohttp 3.9.3 fails to install on Python 3.13.0a4 HOT 4
- aiohttp.web listens both TCP and Unix socket if `-U` has been supplied HOT 4
- TCPConnector / enable `limit_per_url` HOT 5
- Stability issues with gunicorn --max-requests HOT 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aiohttp.