| name | maverick-python-async |
| description | Python async/await patterns and asyncio best practices Use when this capability is needed. |
| metadata | {"author":"get2knowio"} |
Python Async/Await Skill
Expert guidance for asynchronous Python programming with asyncio.
Core Concepts
Async Functions (Coroutines)
async def fetch_data(url: str) -> dict:
"""Async function returns a coroutine."""
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.json()
Running Async Code
import asyncio
asyncio.run(main())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Common Patterns
Concurrent Execution
results = await asyncio.gather(
fetch_data(url1),
fetch_data(url2),
fetch_data(url3),
)
task1 = asyncio.create_task(fetch_data(url1))
task2 = asyncio.create_task(fetch_data(url2))
result1 = await task1
result2 = await task2
Timeouts
try:
result = await asyncio.wait_for(
slow_operation(),
timeout=5.0
)
except asyncio.TimeoutError:
print("Operation timed out")
Async Context Managers
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
data = await response.text()
Async Iterators
async for item in async_generator():
process(item)
Antipatterns
❌ Blocking Calls in Async Functions
async def bad():
time.sleep(1)
response = requests.get(url)
async def good():
await asyncio.sleep(1)
async with aiohttp.ClientSession() as session:
response = await session.get(url)
❌ Not Awaiting Coroutines
async def bad():
fetch_data()
async def good():
await fetch_data()
❌ Creating Too Many Tasks
tasks = [asyncio.create_task(fetch(url)) for url in urls]
async def fetch_with_limit(url, semaphore):
async with semaphore:
return await fetch(url)
semaphore = asyncio.Semaphore(10)
tasks = [fetch_with_limit(url, semaphore) for url in urls]
Review Severity
- CRITICAL: Blocking calls in async functions (time.sleep, requests.get)
- MAJOR: Missing await on coroutines, not handling asyncio.CancelledError
- MINOR: Not using async context managers, inefficient gather usage
Converted and distributed by TomeVault — claim your Tome and manage your conversions.