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
pamelafox commentedJun 17, 2022
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: