Chapter 3 of 6
Failure semantics of a fan-out
With default arguments, asyncio.gather hands the first exception to your caller and leaves every other call in the fan-out running with nobody watching its result or its error. A TaskGroup cancels the siblings instead and surfaces an ExceptionGroup once they have all finished unwinding. This chapter covers which contract a fan-out over documents actually wants, how cancellation is delivered, and the narrower case where gather is still the right call.
Async and concurrency in Python — read the current version at https://daviddominguez.dev/learn/en/async-and-concurrency-in-python/asyncio-gather