pythonadvanced

Run Async Tasks Concurrently with gather

Execute multiple async operations concurrently using asyncio.gather.

python
import asyncio
import aiohttp

async def fetch_url(session, url):
    async with session.get(url) as response:
        data = await response.json()
        return {"url": url, "status": response.status, "data": data}

async def main():
    urls = [
        "https://api.example.com/users",
        "https://api.example.com/posts",
        "https://api.example.com/comments",
    ]

    async with aiohttp.ClientSession() as session:
        # Run all requests concurrently
        results = await asyncio.gather(
            *[fetch_url(session, url) for url in urls],
            return_exceptions=True
        )

    for result in results:
        if isinstance(result, Exception):
            print(f"Error: {result}")
        else:
            print(f"{result['url']}: {result['status']}")

asyncio.run(main())

Use Cases

  • Parallel API calls
  • Concurrent I/O
  • Batch processing

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.