2025-12-23 13:19:49
pyreqwest — новый HTTP-клиент на Rust для Python. GIL-free, HTTP/2 из коробки, sync и async с одинаковым API. Автор — тот же разработчик, который открыл issue #3215 в httpx о 10x просадке производительности при конкурентных запросах.
Зачем переходить с httpxhttpx/httpcore имеют давние проблемы с connection pooling — при 20 конкурентных запросах httpx в 10+ раз медленнее aiohttp. Эти баги висят годами. pyreqwest решает их на уровне архитектуры, потому что connection pool реализован на Rust.
Если httpx работает — можно не трогать. Но в высоконагруженных системах он станет бутылочным горлышком.
Фичи HTTP/1.1 и HTTP/2 (у aiohttp нет HTTP/2)
Автодекомпрессия: zstd, gzip, brotli, deflate
TLS через rustls
Connection pooling, стриминг, multipart
Куки, прокси, редиректы, таймауты
Полные type hints, zero Python-зависимостей
Встроенный мок для тестов + подключение к ASGI напрямую
Быстрый старт:
# uv add pyreqwest
from pyreqwest.client import ClientBuilder, SyncClientBuilder
async def example_async():
async with ClientBuilder().error_for_status(True).build() as client:
response = await client.get("https://httpbun.com/get").query({"q": "val"}).build().send()
print(await response.json())
def example_sync():
with SyncClientBuilder().error_for_status(True).build() as client:
print(client.get("https://httpbun.com/get").query({"q": "val"}).build().send().json())
Код на GitHub
@zen_of_python
2.14K views10:19