| name | python-async |
| description | Async Python patterns via asyncio and aiohttp for I/O-bound concurrency. Use when adding async APIs, handling concurrent I/O, or debugging async code. |
| globs | **/*.py |
| alwaysApply | false |
| category | async |
| tags | ["python","async","asyncio","concurrency","await","coroutines"] |
| tools | [] |
| usage_patterns | ["async-api-development","concurrent-io","websocket-servers","background-tasks"] |
| complexity | intermediate |
| model_hint | standard |
| estimated_tokens | 400 |
| progressive_loading | true |
| modules | ["modules/basic-patterns.md","modules/concurrency-control.md","modules/error-handling-timeouts.md","modules/advanced-patterns.md","modules/testing-async.md","modules/real-world-applications.md","modules/pitfalls-best-practices.md"] |
Async Python Patterns
asyncio and async/await patterns for Python applications.
Quick Start
import asyncio
async def main():
print("Hello")
await asyncio.sleep(1)
print("World")
asyncio.run(main())
When To Use
- Building async web APIs (FastAPI, aiohttp)
- Implementing concurrent I/O operations
- Creating web scrapers with concurrent requests
- Developing real-time applications (WebSockets)
- Processing multiple independent tasks simultaneously
- Building microservices with async communication
When NOT To Use
- CPU-bound optimization - use python-performance instead
- Testing async code - use python-testing async module
Modules
This skill uses progressive loading. Content is organized into focused modules:
- See
modules/basic-patterns.md - Core async/await, gather(), and task management
- See
modules/concurrency-control.md - Semaphores and locks for rate limiting
- See
modules/error-handling-timeouts.md - Error handling, timeouts, and cancellation
- See
modules/advanced-patterns.md - Context managers, iterators, producer-consumer
- See
modules/testing-async.md - Testing with pytest-asyncio
- See
modules/real-world-applications.md - Web scraping and database operations
- See
modules/pitfalls-best-practices.md - Common mistakes and best practices
Load specific modules based on your needs, or reference all for detailed guidance.
Exit Criteria
- Async patterns applied correctly
- No blocking operations in async code
- Proper error handling implemented
- Rate limiting configured where needed
- Tests pass with pytest-asyncio
Troubleshooting
Common Issues
RuntimeError: no current event loop
Use asyncio.run() as the entry point. Avoid in Python 3.10+.