What problem does it solve? Writing concurrent Python code that handles many I/O operations without blocking is error-prone, and developers often struggle with event loops, task management, and mixing sync and async code correctly. ## Core Features & Use Cases - Concurrency Patterns: Provides ready-to-use patterns for gather(), task creation, semaphores, locks, queues, and producer-consumer workflows. - Real-World Examples: Includes implementations for web scraping with aiohttp, async database operations, WebSocket servers, and rate-limited API calls. - Pitfall Guidance: Covers common mistakes like blocking the event loop, forgetting await, and improper cancellation handling, plus testing with pytest-asyncio. - Use Case: When building a FastAPI service that must call 20 external APIs per request, use the semaphore rate-limiting pattern to run requests concurrently without overwhelming downstream services. ## Quick Start Ask the assistant to show you how to fetch multiple URLs concurrently using asyncio and aiohttp with rate limiting.