Skip to main content

A retry layer for HTTPX.

Project description

A retry layer for HTTPX.


HTTPX Retries is a full implementation of request retry policies for HTTPX.

It's very common to deal with flaky and unreliable APIs. When requests fail, your program needs to be able to retry them.


Install HTTPX Retries using pip:

pip install httpx-retries

To get started, add the transport to your client:

import httpx
from httpx_retries import RetryTransport

with httpx.Client(transport=RetryTransport()) as client:
    response = client.get("https://example.com")

For async usage:

async with httpx.AsyncClient(transport=RetryTransport()) as client:
    response = await client.get("https://example.com")

If you want to use a specific retry strategy, provide a Retry configuration:

from httpx_retries import Retry

retry = Retry(total=5, backoff_factor=0.5)
transport = RetryTransport(retry=retry)

with httpx.Client(transport=transport) as client:
    response = client.get("https://example.com")

Features

HTTPX Retries builds on the patterns users will expect from urllib and requests. The typical approach has been to use urllib3's Retry utility to configure a retry policy. The equivalent code to match the above example using requests is:

from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

retry = Retry(total=5, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)

with requests.Session() as session:
    session.mount("http://", adapter)
    session.mount("https://", adapter)
    response = session.get("https://example.com")

To reduce boilerplate, this package includes a transport that works with both sync and async HTTPX clients, so you don't have to explicitly define policies for simple use cases.

HTTPX adds support for asynchronous requests, so the package exposes a new retry utility. To make it easy to migrate, the API surface is almost identical, with a few main differences:

  • total is the only parameter used to configure the number of retries.
  • asleep is an async implementation of sleep.
  • backoff_strategy can be overridden to customize backoff behavior.
  • Some options that are not strictly retry-related are not included (raise_on_status, raise_on_redirect)

Acknowledgements

This package builds on the great work done on HTTPX, urllib3 and requests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

httpx_retries-0.2.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

httpx_retries-0.2.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file httpx_retries-0.2.0.tar.gz.

File metadata

  • Download URL: httpx_retries-0.2.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.5.24

File hashes

Hashes for httpx_retries-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f08822d1f0fd9aced6882b83e80dda56c827fbdf7dc6cf4c8160e8a044459da2
MD5 fd781050117bb7f3926875c44f87fffc
BLAKE2b-256 7045c3834d1c0c6331e1842a9fae502621d74f03c9d3f727b4f0a431ee1a917d

See more details on using hashes here.

File details

Details for the file httpx_retries-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for httpx_retries-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a6a15856ec23a541ca86ba9c8b228a4097e3791ad67face1ca1378acad2c4f34
MD5 270a34e1b884756fd699fb20ddb8b23d
BLAKE2b-256 64754a4d4f77306b8ebb88547cbef73921fbbc3467064c43fb002b6417e85c00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page