← SkillSafe / Asyncio Desk

Does this async Python freeze the event loop, lose tasks or swallow cancellation?

Paste or drop the files behind one async service, worker or client - an aiohttp or FastAPI handler, a queue consumer, a scraper, a polling loop - and its pyproject.toml. Your browser reads every file and checks its asyncio: time.sleep or requests.get inside a coroutine, a coroutine called without await, a task created and dropped, gather errors nobody checks, a CancelledError swallowed, a loop that never awaits, locks an exception leaves held, sessions never closed, pending tasks left running. Free, before you sign in, and nothing is uploaded. Then pick a lane: the audit gives exact edits for each finding, or the fix lane writes the whole fixed file - and the page re-checks both.

The companies, hosts and values in the examples are invented. The first three are audits (the first also carries a saved fix run of its edited code, one click after the audit), the last a fix run; each comes with a saved model reply, so you can see the whole page without signing in or spending a credit.

Paid run

The audit rates the event loop, tasks, cancellation and resources, confirms or dismisses every flag below, adds what rules cannot see, and gives exact before/after edits for each finding - which the page applies to your paste and re-checks.

nothing pasted yet
Drop the .py files and pyproject.toml, or the package folder (they are joined into one paste, each keeps its path), or
Paste Python code to price the run.

What this does, and what it does not

The check is a reading of the text, not Python: nothing is imported or run. Each file is lexed so strings and comments are never mistaken for code, its blocks are rebuilt from indentation so each coroutine, loop, try and with has its exact extent, and each flag carries the catalogue id it comes from and the line it points at. Checks only see what you paste: whether an imported function is a coroutine, or blocks, is outside the check (it is noted, not assumed), and running your tests with asyncio debug mode on (PYTHONASYNCIODEBUG=1) remains the ground truth for slow callbacks and never-awaited coroutines.

The paid lanes see your paste and the page's facts. Every quote and edit they return is checked against your paste, every edit and every returned file is put back and re-checked, and a reply that repeats a credential from your paste is called out. A paste stays in this browser unless you run a lane. Derived from the agent skill @wshobson/async-python-patterns by Seth Hobson (wshobson/agents, MIT). Sources are listed in llms.txt.