You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a result of the discussion on #74166, @iritkatriel added the all_errors keyword argument to socket.py:create_connection. When set to True, multiple exceptions are raised using an ExceptionGroup instead of a single OSError with the messages combined. I propose adding the same all_errors keyword to asyncio.create_connection, which would raise an ExceptionGroup in the case of connection errors (not for other errors, however).
Pitch
An ExceptionGroup is much nicer to handle than parsing through a concatenated string. An issue in the websockets library indicates that developers would like that for asyncio.create_connection as well. I personally ran into it myself as well.
Example usage:
async def check_ports(host: str, start: int, end: int, max=10):
for port in range(start, end):
try:
future = asyncio.open_connection(host=host, port=port, all_errors=True)
r, w = await asyncio.wait_for(future, timeout=timeout)
yield port
w.close()
except* ConnectionRefusedError:
pass
except* asyncio.TimeoutError:
pass
Feature or enhancement
As a result of the discussion on #74166, @iritkatriel added the
all_errors
keyword argument to socket.py:create_connection. When set to True, multiple exceptions are raised using an ExceptionGroup instead of a single OSError with the messages combined. I propose adding the sameall_errors
keyword to asyncio.create_connection, which would raise an ExceptionGroup in the case of connection errors (not for other errors, however).Pitch
An ExceptionGroup is much nicer to handle than parsing through a concatenated string. An issue in the websockets library indicates that developers would like that for asyncio.create_connection as well. I personally ran into it myself as well.
Example usage:
Previous discussion
Related discussion on:
#74166
I will send a PR with the proposed change.
The text was updated successfully, but these errors were encountered: