Skip to main content

eth_retry

Stop transient errors from wasting your time!

eth_retry is a Python library that provides one decorator, eth_retry.auto_retry.

auto_retry will automatically catch known transient exceptions that are common in the Ethereum/EVM ecosystem and will reattempt to evaluate your decorated function up to os.environ['MAX_RETRIES'] (default: 10) times.

Supports both synchronous and asynchronous functions.


Covers many common transient errors in the EVM ecosystem, including:

  • RPC timeouts
  • Block explorer API rate-limiting
  • Generic exceptions:
    • ConnectionError
    • HTTPError
    • ReadTimeout
    • TimeoutError
  • eth-brownie specific errors:
    • sqlite3.OperationalError: database is locked

Installation:

pip install eth_retry or pip install git+https://github.com/BobTheBuidler/eth_retry.git

Usage:

import eth_retry

@eth_retry.auto_retry
def some_function_that_errors_sometimes():
    i = 0
    am = 1
    doing = 2
    stuff = 3
    return stuff

error_free_result = some_function_that_errors_sometimes()

Between attempts, eth_retry will time.sleep for a random period between os.environ['MIN_SLEEP_TIME'] (default: 10) and os.environ['MAX_SLEEP_TIME'] (default: 20) seconds. The period is randomized to help prevent repetitive rate-limiting issues with parallelism by staggering the retries.

On the nth retry, the sleep period is multiplied by n so that the target endpoint can cool off in case of rate-limiting.

After os.environ['MAX_RETRIES'] failures, eth_retry will raise the exception.

Environment:

# Minimum sleep time in seconds. Integer. Defaults to 10.
MIN_SLEEP_TIME=10

# Maximum sleep time in seconds. Integer. Defaults to 20.
MAX_SLEEP_TIME=20

# Maximum number of times to retry. Integer. Defaults to 10.
MAX_RETRIES=10

Download files

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

Source Distribution

eth_retry-0.3.8.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

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

eth_retry-0.3.8-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file eth_retry-0.3.8.tar.gz.

File metadata

  • Download URL: eth_retry-0.3.8.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.6 Linux/6.17.0-1020-azure

File hashes

Hashes for eth_retry-0.3.8.tar.gz
Algorithm Hash digest
SHA256 53fba6afd2b89f4450d1f4c0e6cd929d33bd88f3bbf3225526f56db299530f3f
MD5 270c22ebb8fb315e9e9540ee36049f9b
BLAKE2b-256 4e9af5fcd9f3ab43428dbe70e189785d2858e4df1b0aea7d61b5759ab61d9cea

See more details on using hashes here.

File details

Details for the file eth_retry-0.3.8-py3-none-any.whl.

File metadata

  • Download URL: eth_retry-0.3.8-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.6 Linux/6.17.0-1020-azure

File hashes

Hashes for eth_retry-0.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 5d1e188cddf2a1ec106faad57cb42d98694a21cea3e6fe3ca44c1fb37ff4f0c6
MD5 f2598ccdb0d97b758ac54566a6aa1458
BLAKE2b-256 5968bc63b2081cede3dcc7421c42ee073df8376605161b70704e1432624ab142

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.8

Supported by

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