Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
b11469a
GH-91048: Add utils for printing the call stack for asyncio tasks
pablogsal May 1, 2025
7f800e8
Maybe
pablogsal May 2, 2025
c5e4efe
Maybe
pablogsal May 2, 2025
1c982b1
Maybe
pablogsal May 2, 2025
2d94cde
fix configure
pablogsal May 2, 2025
0a9a496
fix configure
pablogsal May 2, 2025
db47ff3
fix configure
mgmacias95 May 2, 2025
6f8bd4c
some tests + fixes
mgmacias95 May 2, 2025
152b3d7
improve tests
mgmacias95 May 2, 2025
955ef27
dsf
pablogsal May 2, 2025
65aee3c
dsf
pablogsal May 2, 2025
51e689e
test fixes
pablogsal May 3, 2025
1d27348
test fixes
pablogsal May 3, 2025
1d1b0e9
test fixes
pablogsal May 3, 2025
edad4d1
test fixes
pablogsal May 3, 2025
199589c
Fix free threading offsets
pablogsal May 3, 2025
9e87032
Fix free threading offsets AGAIN
pablogsal May 3, 2025
69e9221
Debugging
pablogsal May 3, 2025
b6cb609
More tests
pablogsal May 3, 2025
2dd3452
Add news entry
pablogsal May 3, 2025
a84a171
Doc fixes
pablogsal May 3, 2025
0f75edc
Fix doc build
ambv May 3, 2025
c3a6bcb
Add Yury
ambv May 3, 2025
5e1cb87
fix: Show independent tasks in the table
mgmacias95 May 3, 2025
d92b520
Merge pull request #101 from mgmacias95/GH-91048-tasks
pablogsal May 3, 2025
af6a8bf
Temporarily skip test_async_global_awaited_by on free-threading
ambv May 3, 2025
8db5dbe
Drop the `tools`. It's cleaner.
ambv May 3, 2025
6f8aa6b
Satisfy the linting gods
ambv May 3, 2025
8d566c6
chore: Refactor
mgmacias95 May 4, 2025
977c15a
Merge pull request #103 from mgmacias95/GH-91048-tasks
pablogsal May 4, 2025
9dbe00d
Doc fixes
pablogsal May 4, 2025
c56782b
Type fixes
pablogsal May 4, 2025
293337f
Type fixes
pablogsal May 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Doc fixes
  • Loading branch information
pablogsal committed May 4, 2025
commit 9dbe00d276b3bd8eb1201e1450a2db63239739bf
67 changes: 35 additions & 32 deletions Doc/whatsnew/3.14.rst
Original file line number Diff line number Diff line change
Expand Up @@ -541,26 +541,21 @@ For example given this code:

import asyncio

async def sleeper(name, delay):
await asyncio.sleep(delay)
print(f"{name} is done sleeping.")
async def play(track):
await asyncio.sleep(5)
print(f"🎵 Finished: {track}")

async def inner(name):
await asyncio.sleep(0.1)
await sleeper(name, 1)

async def task_group(name):
await asyncio.gather(
inner(f"{name}-1"),
inner(f"{name}-2"),
)
async def album(name, tracks):
async with asyncio.TaskGroup() as tg:
for track in tracks:
tg.create_task(play(track), name=track)

async def main():
# Start two separate task groups
t1 = asyncio.create_task(task_group("groupA"))
t2 = asyncio.create_task(task_group("groupB"))
await t1
await t2
async with asyncio.TaskGroup() as tg:
tg.create_task(
album("Sundowning", ["TNDNBTG", "Levitate"]), name="Sundowning")
tg.create_task(
album("TMBTE", ["DYWTYLM", "Aqua Regia"]), name="TMBTE")

if __name__ == "__main__":
asyncio.run(main())
Expand All @@ -571,13 +566,15 @@ Executing the new tool on the running process will yield a table like this:

python -m asyncio ps 12345

tid task id task name coroutine chain awaiter name awaiter id
tid task id task name coroutine chain awaiter name awaiter id
---------------------------------------------------------------------------------------------------------------------------------------
6826911 0x200013c0220 Task-2 main Task-1 0x200013b0020
6826911 0x200013c0620 Task-4 task_group Task-2 0x200013c0220
6826911 0x200013c0820 Task-5 task_group Task-2 0x200013c0220
6826911 0x200013c0c20 Task-6 task_group Task-3 0x200013c0420
6826911 0x200013c0e20 Task-7 task_group Task-3 0x200013c0420
8138752 0x564bd3d0210 Task-1 0x0
8138752 0x564bd3d0410 Sundowning _aexit -> __aexit__ -> main Task-1 0x564bd3d0210
8138752 0x564bd3d0610 TMBTE _aexit -> __aexit__ -> main Task-1 0x564bd3d0210
8138752 0x564bd3d0810 TNDNBTG _aexit -> __aexit__ -> album Sundowning 0x564bd3d0410
8138752 0x564bd3d0a10 Levitate _aexit -> __aexit__ -> album Sundowning 0x564bd3d0410
8138752 0x564bd3e0550 DYWTYLM _aexit -> __aexit__ -> album TMBTE 0x564bd3d0610
8138752 0x564bd3e0710 Aqua Regia _aexit -> __aexit__ -> album TMBTE 0x564bd3d0610


or:
Expand All @@ -587,15 +584,21 @@ or:
python -m asyncio pstree 12345

└── (T) Task-1
└── main
└── (T) Task-2
└── task_group
├── (T) Task-4
└── (T) Task-5
└── (T) Task-3
└── task_group
├── (T) Task-6
└── (T) Task-7
└── main
└── __aexit__
└── _aexit
├── (T) Sundowning
│ └── album
│ └── __aexit__
│ └── _aexit
│ ├── (T) TNDNBTG
│ └── (T) Levitate
└── (T) TMBTE
└── album
└── __aexit__
└── _aexit
├── (T) DYWTYLM
└── (T) Aqua Regia

If a cycle is detected in the async await graph (which could indicate a
programming issue), the tool raises an error and lists the cycle paths that
Expand Down
Loading