Member-only story
Python + AnyIO Task Cancellation Maps: Deadline-Aware Pipelines That Don’t Leak Work
Build async pipelines where every task has a budget, every budget has a cancel scope, and timeouts don’t leave ghost work chewing CPU after the user is gone.
You’ve probably seen this in production: the client times out, your API returns a 504… and your server keeps working anyway. Still calling downstream services. Still crunching. Still writing to caches. Nobody will ever see the result, but your infra bill definitely will.
Let’s be real: that’s not “async.” That’s a leak.
The fix isn’t “be careful.” It’s to design cancellation as a first-class feature — especially when you have deadlines. AnyIO gives you the right primitives: task groups (structured concurrency) and cancel scopes (Trio-style cancellation).
This article is about a pattern I call task cancellation maps: a simple way to explicitly map pipeline stages to deadlines, and deadlines to cancel scopes, so work stops when it stops mattering.
Why pipelines leak work (even when you “use async”)
Most leaks come from one of these:
- You spawn tasks and never…









