Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.
Just instructions. No commands, network, or file access.
Files
SKILL.md
async-python-patterns
Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.
Async Python Patterns
Comprehensive guidance for implementing asynchronous Python applications using asyncio, concurrent programming patterns, and async/await for building high-performance, non-blocking systems.
import asyncio
from typing importList, Optionalasyncdefrisky_operation(item_id: int) -> dict:
"""Operation that might fail."""await asyncio.sleep(0.1)
if item_id % 3 == 0:
raise ValueError(f"Item {item_id} failed")
return {"id": item_id, "status": "success"}
asyncdefsafe_operation(item_id: int) -> Optional[dict]:
"""Wrapper with error handling."""try:
returnawait risky_operation(item_id)
except ValueError as e:
print(f"Error: {e}")
returnNoneasyncdefprocess_items(item_ids: List[int]):
"""Process multiple items with error handling."""
tasks = [safe_operation(iid) for iid in item_ids]
results = await asyncio.gather(*tasks, return_exceptions=True)
# Filter out failures
successful = [r for r in results if r isnotNoneandnotisinstance(r, Exception)]
failed = [r for r in results ifisinstance(r, Exception)]
print(f"Success: {len(successful)}, Failed: {len(failed)}")
return successful
asyncio.run(process_items([1, 2, 3, 4, 5, 6]))
Pattern 5: Timeout Handling
import asyncio
asyncdefslow_operation(delay: int) -> str:
"""Operation that takes time."""await asyncio.sleep(delay)
returnf"Completed after {delay}s"asyncdefwith_timeout():
"""Execute operation with timeout."""try:
result = await asyncio.wait_for(slow_operation(5), timeout=2.0)
print(result)
except asyncio.TimeoutError:
print("Operation timed out")
asyncio.run(with_timeout())
Detailed worked examples and patterns
Detailed sections (starting with ## Advanced Patterns) live in references/details.md. Read that file when the navigation summary above is insufficient.
Common Pitfalls
1. Forgetting await
# Wrong - returns coroutine object, doesn't execute
result = async_function()
# Correct
result = await async_function()