---
title: "Why Does Async Python Still Freeze When I Call requests.get?"  
description: "Why Does Async Python Still Freeze When I Call requests.get?"  
author: "Eetu Saarinen"  
published: 2026-10-26  
canonical: https://answers.mindstick.com/qa/118303/why-does-async-python-still-freeze-when-i-call-requests-get  
category: "Mix Category"  
tags: ["Python", "Async programming", "HTTP requests"]  
reading_time: 1 minute  

---

# Why Does Async Python Still Freeze When I Call requests.get?

I’m learning **asyncio** and expected this small example to let the event loop handle other work while the request is waiting. Instead, the second coroutine seems to pause until the first request finishes.

```python
import asyncio
import requests

async def fetch_page(url):
    # This synchronous call blocks the event loop while it waits for a response.
    response = requests.get(url, timeout=10)
    return response.status_code

async def main():
    # These tasks are scheduled together, but the blocking call still runs in sequence.
    results = await asyncio.gather(
        fetch_page("https://example.com"),
        fetch_page("https://httpbin.org/delay/2"),
    )
    print(results)

asyncio.run(main())
```

Is the issue simply that `requests.get` is synchronous, even though it sits inside an `async def`? I’m trying to understand when to use an async HTTP client versus sending blocking work to a thread, especially for a script that needs to fetch many URLs.


---

Original Source: https://answers.mindstick.com/qa/118303/why-does-async-python-still-freeze-when-i-call-requests-get

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
