Tecnología · GUÍA PRÁCTICA
¿asyncio.gather falló pero las tareas hermanas siguen? Elige TaskGroup o cancelación propia
gather propaga la primera excepción sin cancelar hermanas. UsaTaskGroup para fallar juntas o conservaTask, cancela y espera la limpieza.

asyncio.gather agrega resultados; no es un ámbito de fallo conjunto. La primera excepción llega al llamador mientras las hermanas pendientes siguen programadas. Si elFuture está terminado,cancel devuelvefalse.
Decide la política antes de programar. Si todo pertenece a una frontera de consistencia, usaTaskGroup enPython 3.11+. Para políticas selectivas, creaTask, cancela las elegidas, espera su limpieza y vuelve a lanzar.
1. Demuestra que el trabajo sobrevive
Combina una corrutina que falla pronto y otra que marca algo después. Tras la excepción, cancelagather y mantén el bucle;false y la marca reproducen la cancelación tardía.
EnCPython 3.12.14 la hermana lenta terminó; conTaskGroup quedó cancelada.
2. Elige política antes que API
Si las hermanas actualizan un resultado común y un fallo invalida el resto, usaTaskGroup.
Si son independientes o algunos errores son recuperables, conserva la propiedad de losTask.
3. Python 3.11+: usaTaskGroup
Crea todas las hermanas en el mismoTaskGroup. El primer fallo no cancelatorio cancela las restantes y espera limpieza.
Maneja tipos concretos conexcept* fuera deasync with y no traguesCancelledError.
4. Política selectiva: posee, cancela, espera y relanza
CreaTask antes degather, cancela solo las elegidas y espera todos losTask propios conreturn_exceptions=True.
Después vuelve a lanzar la causa o representa cada resultado explícitamente.
5. Verifica cancelación cooperativa
CancelledError se inyecta en unawait. Limpia entry/finally y normalmente relanza.
Prueba continuidad degather, cancelación deTaskGroup, drenaje manual, cancelación del padre y efectos laterales.
