The following code: server = await asyncio.start_server(...) async with server: ... code that raises ... would lose the original exception because the server's task would not have had a chance to be scheduled yet, and so awaiting the task in wait_closed would raise the cancellation instead of the original exception. Additionally, ensures that explicitly cancelling the parent task delivers the cancellation correctly (previously was masked by the server loop), now this only happens if the server was closed, not when the task was cancelled. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
24 lines
301 B
Plaintext
24 lines
301 B
Plaintext
create server1
|
|
create server2
|
|
OSError
|
|
sleep
|
|
create server3
|
|
OSError
|
|
create server4
|
|
server4 closed
|
|
sleep 0
|
|
CancelledError
|
|
sleep 1
|
|
create task server 1
|
|
CancelledError
|
|
sleep 2
|
|
create task server 2
|
|
CancelledError
|
|
sleep 3
|
|
create task server 3
|
|
CancelledError
|
|
sleep 4
|
|
create task server 4
|
|
CancelledError
|
|
done
|