📝 LLM и AI

httpx: современный HTTP-клиент для Python

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
330
🌿
Уровень
Средний

httpx — HTTP-клиент нового поколения. Интерфейс похож на requests, но с поддержкой async/await из коробки.

Установка

uv add httpx

Базовые запросы

import httpx

# GET запрос
response = httpx.get("https://wttr.in/Moscow?format=j1", timeout=10)
response.raise_for_status()  # бросает исключение при 4xx/5xx
data = response.json()

# GET с параметрами
response = httpx.get(
    "https://api.example.com/search",
    params={"q": "python", "limit": 10},
    timeout=10
)

# POST с JSON
response = httpx.post(
    "https://api.example.com/data",
    json={"key": "value"},
    headers={"Authorization": "Bearer token"},
    timeout=10
)

timeout — всегда указывай

# Без timeout запрос может висеть вечно
response = httpx.get(url, timeout=10)      # 10 секунд
response = httpx.get(url, timeout=None)    # без ограничений (плохо)

# Раздельные таймауты
timeout = httpx.Timeout(connect=5.0, read=30.0)
response = httpx.get(url, timeout=timeout)

raise_for_status()

try:
    response = httpx.get(url, timeout=10)
    response.raise_for_status()
    data = response.json()
except httpx.TimeoutException:
    return "Ошибка: сервер не ответил за 10 секунд"
except httpx.HTTPStatusError as e:
    return f"Ошибка {e.response.status_code}: {e.response.text}"

Переиспользование клиента (Client)

# Лучше создать клиент один раз для нескольких запросов
with httpx.Client(timeout=10, base_url="https://api.example.com") as client:
    r1 = client.get("/users")
    r2 = client.get("/posts")

Async клиент

import asyncio
import httpx

async def fetch(url: str) -> dict:
    async with httpx.AsyncClient(timeout=10) as client:
        response = await client.get(url)
        response.raise_for_status()
        return response.json()

# Параллельные запросы
async def fetch_all(urls: list[str]) -> list[dict]:
    async with httpx.AsyncClient(timeout=10) as client:
        tasks = [client.get(url) for url in urls]
        responses = await asyncio.gather(*tasks)
        return [r.json() for r in responses]

httpx vs requests

requests httpx
Sync
Async
HTTP/2
Типизация частично полная
API одинаковое одинаковое

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

asyncio в Python: асинхронное программирование

asyncio — стандартная библиотека Python для асинхронного кода. Позволяет выполнять несколько задач «одновременно» в одном...

📅 30.06.2026 👁️ 317
📝

SQLite в Python: персистентная память для агентов

SQLite — встроенная в Python реляционная база данных. Хранит данные в одном файле, не требует...

📅 30.06.2026 👁️ 349
📝

AI-агенты: ReAct loop и автономные действия

Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их...

📅 30.06.2026 👁️ 335
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Нейросети в коде: 5 AI-проектов на Python с Claude Открыть программу курса