eth-retry
Provides a decorator that automatically catches known transient exceptions that are common in the Ethereum/EVM ecosystem and reattempts to evaluate your decorated function
What it is and what it does
eth_retry is a single-decorator library for catching and retrying transient failures in Ethereum and EVM ecosystem code. It wraps functions (both sync and async) with automatic retry logic that catches known ephemeral errors like RPC timeouts, rate-limiting responses, and connection failures. When a decorated function fails, eth_retry sleeps for a randomized backoff period (scaled by retry count) before trying again, up to a configurable maximum number of attempts. This is especially useful in blockchain development where external APIs and nodes frequently experience temporary outages or rate limits.
The library requires no external dependencies and is configured entirely through environment variables: MAX_RETRIES (default 10), MIN_SLEEP_TIME (default 10 seconds), and MAX_SLEEP_TIME (default 20 seconds). The randomized sleep window helps prevent thundering-herd problems when multiple parallel requests retry simultaneously.
Use it for:
- Wrap RPC calls to Ethereum nodes to tolerate temporary network or node unavailability without manual retry logic.
- Decorate block explorer API queries to handle rate-limiting transparently and resume after backoff.
- Protect eth-brownie scripts from sqlite3 database lock errors during concurrent operations.
- Simplify error handling in async functions that call external blockchain services.
- Add resilience to data-fetching functions in monitoring or indexing jobs without rewriting control flow.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A decorator that automatically retries functions when they encounter transient errors common in Ethereum/EVM development, such as RPC timeouts, rate-limiting, and connection failures.
Yes. eth_retry solves a real pain point in Ethereum development with zero dependencies, active maintenance, and a permissive license. If you write code that calls blockchain RPCs or external APIs, this decorator will save you from writing boilerplate retry logic and help you handle transient failures gracefully.
Install
eth-retry on PyPI
pip
pip install eth-retryuv
uv add eth-retrypoetry
poetry add eth-retryInstalling eth-retry
Before you install
Low friction: pure Python wheel with no runtime dependencies. Active maintenance with a recent release (5 days old) and current Python version support.
License in practice
MIT license is permissive; you can use this freely in commercial and private projects with minimal restrictions.
Quickstart
import eth_retry
@eth_retry.auto_retry
def call_rpc():
# function that may fail transiently
return result
error_free_result = call_rpc()
Requires Python 3.10 or later; configure MAX_RETRIES, MIN_SLEEP_TIME, and MAX_SLEEP_TIME via environment variables if defaults don't suit your use case.
Verify before relying
- Whether the decorator preserves function signatures and return type hints for IDE/type-checker support.
- Performance overhead of the decorator when applied to frequently-called functions.
- Exact list of eth-brownie-specific errors beyond sqlite3.OperationalError that are caught.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 5 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 158,377/month — #10,726 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: eth_retry-0.3.8-py3-none-any.whl
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
reretryA decorator and function wrapper for retrying…
permissive · top 15,000 on PyPI
python-retryProvides a decorator to automatically retry…
permissive · top 15,000 on PyPI
awsretryA decorator that wraps AWS API calls to…
permissive · top 15,000 on PyPI
retryProvides a decorator and function wrapper for…
permissive · top 1,000 on PyPI
retry2Provides a decorator and function wrapper to…
permissive · top 5,000 on PyPI
retryhttpRetryhttp wraps HTTP client calls to…
permissive · top 5,000 on PyPI
staminaStamina wraps Tenacity to provide a…
permissive · top 5,000 on PyPI
eth-brownieBrownie is a Python framework for developing,…
permissive · top 15,000 on PyPI
retryingRetrying is a decorator-based library that adds…
permissive · top 1,000 on PyPI
redoRedo provides decorators, functions, and a…
copyleft · top 5,000 on PyPI