gh-108951: document how to terminate an asyncio.TaskGroup#123837
gh-108951: document how to terminate an asyncio.TaskGroup#123837gvanrossum merged 3 commits intopython:mainfrom
asyncio.TaskGroup#123837Conversation
sobolevn
left a comment
There was a problem hiding this comment.
Thank you for polishing this! I am still not sure if this is worth adding to the docs or not. But, this is, luckily, up to asyncio maintainers to decide :)
I knew it. When I was writing it I was like "hum... it's too long", so I wanted someone else's eyes, so thanks a lot for the comments Guido. I'll address them tomorrow |
76942ed to
7c709b4
Compare
7c709b4 to
b4dc0bb
Compare
|
I kept the output because not everyone wants to run the code (sometimes, they just want to see the output). If you feel that neither the output nor the intermediate printing jobs are needed, please tell me. However, I think it's nice for the users to see a standalone working example. |
gvanrossum
left a comment
There was a problem hiding this comment.
Almost there! It looks nice and simple now.
picnixz
left a comment
There was a problem hiding this comment.
A last bike-shedding question: would it make sense to also rename CancelTaskGroup into StopTaskGroup? strictly speaking, the exception serves as a signal to cancel/stop the task group (in the English sense) but we neither use CancelledError nor .cancel().
We would still use cancel in the docstring but to highlight the non-use of CancelledError, having a visually different name could be helpful for users (but it could also be confusing because they are close to each other...).
willingc
left a comment
There was a problem hiding this comment.
Thanks! I've added some suggestions.
|
Maybe it's because I'm not an English native / asyncio expert, but I feel a slight difference with "terminate", "cancel", "stop" and "abort":
I will go for terminate because:
|
|
@willingc I took the liberty of rewording a bit the introductory paragraph. I quite like the |
|
Thanks @picnixz for the PR, and @gvanrossum for merging it 🌮🎉.. I'm working now to backport this PR to: 3.12, 3.13. |
…onGH-123837) We don't want to add another API, since the recipe is straightforward and rarely needed. The advantage is that we could backport this to the earliest Python version that has taskgroups (3.11, alas in security mode already, so we'll just do 3.12 and 3.13). (cherry picked from commit ef05801) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
|
GH-123956 is a backport of this pull request to the 3.13 branch. |
…onGH-123837) We don't want to add another API, since the recipe is straightforward and rarely needed. The advantage is that we could backport this to the earliest Python version that has taskgroups (3.11, alas in security mode already, so we'll just do 3.12 and 3.13). (cherry picked from commit ef05801) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
|
GH-123957 is a backport of this pull request to the 3.12 branch. |
asyncio.TaskGroupasyncio.TaskGroup
…123837) (#123956) gh-108951: Document how to terminate an asyncio.TaskGroup (GH-123837) We don't want to add another API, since the recipe is straightforward and rarely needed. The advantage is that we could backport this to the earliest Python version that has taskgroups (3.11, alas in security mode already, so we'll just do 3.12 and 3.13). (cherry picked from commit ef05801) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
…123837) (#123957) gh-108951: Document how to terminate an asyncio.TaskGroup (GH-123837) We don't want to add another API, since the recipe is straightforward and rarely needed. The advantage is that we could backport this to the earliest Python version that has taskgroups (3.11, alas in security mode already, so we'll just do 3.12 and 3.13). (cherry picked from commit ef05801) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>

Credits to @sobolevn for the original implementation. I just reformulated a bit the way the tasks are created for the docs to make it a bit simpler (I think?)
asyncio.TaskGroup.cancelmethod #108951📚 Documentation preview 📚: https://cpython-previews--123837.org.readthedocs.build/