Skip to main content

Provides a decorator that automatically catches known transient exceptions that are common in the Ethereum/EVM ecosystem and reattempts to evaluate your decorated function

Project description

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

Project details


Release history Release notifications | RSS feed

This version

0.3.3

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.3.tar.gz (5.2 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.3-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: eth_retry-0.3.3.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.9.22 Linux/6.11.0-1012-azure

File hashes

Hashes for eth_retry-0.3.3.tar.gz
Algorithm Hash digest
SHA256 cc7c1c60b9503324d701fbaceb3f7e1ee3c046b0bdb23e9a57bd8692e4caac02
MD5 4302fae108cc60da856edc080a110429
BLAKE2b-256 6f123689d2bfdfbc6a9d91b91099c0f76b913b1c81398db362487546e4422fbb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: eth_retry-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.9.22 Linux/6.11.0-1012-azure

File hashes

Hashes for eth_retry-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d3758da776ab010812c34267f052385df7904415b54c4b0fd85ffe746086912e
MD5 71ea29fd5148810de6df8bc18233d4a4
BLAKE2b-256 ee880089996123908beb5de0350bde2008c02655e6df83f5bd6adde60a1fc446

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