Start here. This is the direct spoken answer to practice first.
Overview
Combines asyncio debug evidence, task inspection, warnings, profiling, and capacity signals.
I enable asyncio debug mode in a controlled environment, configure slow-callback reporting, and surface ResourceWarning messages. During a stall I inspect task names and stacks, event-loop lag, CPU profiles, and downstream timings. Orphaned-task warnings, never-awaited coroutine warnings, unclosed transports, and task exceptions that were never retrieved point to ownership or cleanup defects rather than random runtime noise.