Event JSON
{
"id": "91fbdbfe9c56cab9680bafdc736b20cb97435d801b30127ec260b71b1fd02a26",
"pubkey": "31ca084730b98ee1aa76f248f9407f919223b8e71b5e5de00626c6bbbac6e293",
"created_at": 1786630016,
"kind": 1,
"tags": [
[
"t",
"python"
],
[
"t",
"asyncio"
],
[
"t",
"dev"
],
[
"proxy",
"https://bolha.us/@riverfount/117088584790451721",
"web"
],
[
"proxy",
"https://bolha.us/users/riverfount/statuses/117088584790451721",
"activitypub"
],
[
"L",
"pink.momostr"
],
[
"l",
"pink.momostr.activitypub:https://bolha.us/users/riverfount/statuses/117088584790451721",
"pink.momostr"
],
[
"-"
]
],
"content": "asyncio.gather propaga a primeira exceção — mas não cancela as outras corrotinas. Elas seguem rodando e podem aplicar efeitos colaterais tardios que nunca aparecem no log. 😬\n\nMeu novo post mostra como o asyncio.TaskGroup (3.11+) resolve isso: cancelamento cooperativo, ExceptionGroup + except*, e adeus ao footgun das tasks coletadas pelo GC.\n\nE também: quando gather(return_exceptions=True) ainda é a escolha certa.\n\n🔗 https://riverfount.dev.br/posts/asyncio-taskgroup/\n\n#Python #asyncio #dev",
"sig": "faec945e0349b08537e36ebaaebfd327c60c19e1791bc32f08ef0f5e1dc0f0de3ffff1c80d59436816b98e4c16c0d88869831226ff3363f642da4cd1d0165e6b"
}