▲ Click the card above to follow me
Httpx: Making Asynchronous HTTP Requests Smooth as Silk!
The world of network requests in Python has been continuously evolving, and today we are going to talk about this library that excites developers – Httpx. Imagine your network requests no longer crawling like a snail, but flying like an arrow! Httpx is not just another HTTP library; it is a game changer in asynchronous programming.
Why Choose Httpx?
The traditional requests library has been with us for a long time, but its performance can be a bit disappointing in high concurrency scenarios. Httpx was born to address this; it not only retains the elegant API of requests but also introduces the superpower of asynchrony!
Installation and Basic Usage
Installing Httpx is just a one-liner:
pip install httpx
Let’s take a look at what a basic GET request looks like:
import httpx
import asyncio
async def fetch_data():
async with httpx.AsyncClient() as client:
response = await client.get('https://api.github.com')
print(response.text)
asyncio.run(fetch_data())
Seamless Switching Between Synchronous and Asynchronous
One of the highlights of Httpx is its seamless support for both synchronous and asynchronous modes. Those who have written asynchronous code know that switching modes can often be a headache. But with Httpx, it’s as simple as one parameter:
# Synchronous mode
client = httpx.Client()
# Asynchronous mode
async_client = httpx.AsyncClient()
Concurrent Requests: Doubling Efficiency
Want to request multiple APIs at the same time? Httpx makes this so easy:
import httpx
import asyncio
async def fetch_multiple_urls():
urls = [
'https://api.github.com',
'https://api.gitlab.com',
'https://api.bitbucket.org'
]
async with httpx.AsyncClient() as client:
tasks = [client.get(url) for url in urls]
responses = await asyncio.gather(*tasks)
for response in responses:
print(response.text)
asyncio.run(fetch_multiple_urls())
Timeout and Retry Mechanism
The worst thing about network requests is getting stuck or failing. Httpx provides elegant timeout and retry configurations:
async with httpx.AsyncClient(
timeout=httpx.Timeout(5.0), # 5 seconds timeout
limits=httpx.Limits(max_keepalive_connections=5)) as client:
response = await client.get('https://example.com')
WebSocket Support
Not just HTTP, Httpx also perfectly supports WebSocket:
import httpx
async with httpx.AsyncClient() as client:
with client.stream('GET', 'wss://example.com/socket') as response:
async for data in response.aiter_text():
print(data)
Friendly Reminders
- Asynchronous code needs to be executed within an
asyncfunction - Remember to use
asyncio.run()or an appropriate event loop - In the asynchronous world,
awaitis your best friend
Httpx is not just a library; it represents the future of Python network requests! Whether you are building crawlers, microservices, or need high-performance network interactions, Httpx is your best choice.

Like and share

Let money and love flow to you