- Home
- Skills
- Martinholovsky
- Claude Skills Generator
- Async Programming
async-programming_skill
- Shell
25
GitHub Stars
1
Bundled Files
2 months ago
Catalog Refreshed
4 months ago
First Indexed
Readme & install
Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.
Installation
Preview and clipboard use veilstrat where the catalogue uses aiagentskills.
npx veilstrat add skill martinholovsky/claude-skills-generator --skill async-programming- SKILL.md13.8 KB
Overview
This skill teaches safe, performant concurrent programming with Python asyncio and Rust Tokio, emphasizing race condition prevention, resource safety, and graceful shutdown. It presents test-driven workflows, practical patterns for locks, task coordination, and performance primitives, and highlights common async vulnerabilities and mitigations. The guidance is focused on outcomes: correctness under concurrency, predictable cleanup, and measurable performance.
How this skill works
The skill inspects common async failure modes and provides concrete patterns and code examples to prevent them. It demonstrates TDD-first validation, use of async context managers for resource lifecycle, locking and atomic DB operations for shared state, and task grouping and semaphores for coordination and rate limiting. It also guides running stress and blocking-call checks to validate behavior under load.
When to use it
- Implementing concurrent I/O-bound services or clients
- Sharing mutable state across async tasks
- Managing pooled resources (connections, file handles) with cancellation
- Designing graceful shutdown and background task tracking
- Optimizing throughput while bounding resource usage
Best practices
- Write failing async tests first with pytest-asyncio or equivalent
- Protect all shared mutable state with locks, atomics, or message passing
- Use async context managers to guarantee cleanup even on cancellation
- Limit concurrency with semaphores and TaskGroup for automatic cancellation on failure
- Avoid blocking the event loop; use aiofiles or run_in_executor for CPU/IO blocking work
- Establish consistent lock ordering and timeouts to prevent deadlocks
Example use cases
- Safe counter used by many concurrent workers (SafeCounter pattern)
- Atomic money transfer using SELECT FOR UPDATE or transactional row locks
- Bounded HTTP fetcher using asyncio.gather with a semaphore
- Graceful application shutdown that cancels tracked tasks and waits for cleanup
- Resource pool management with asynccontextmanager ensuring release on cancel
FAQ
Write targeted concurrent tests that exercise shared state under load and use stress runs; look for read/await/write patterns and add locks or atomic DB operations where needed.
When should I prefer TaskGroup over plain create_task?
Prefer TaskGroup (Python 3.11+) when you need automatic cancellation propagation and structured task lifetime; track create_task manually if tasks must outlive the caller.