skillfed

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

eth-retry v0.3.8 158.4K downloads/30d#10,726 on PyPI11
Permissive license MIT Active released

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-retry

uv

uv add eth-retry

poetry

poetry add eth-retry

Installing 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

License :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14

Tags

ethereum retry decoratorEVM transient error handlingRPC timeout retryautomatic retry with backoffeth-brownie error recoveryrate limit retry logicasync retry decorator
ethereumresiliencedecorator

More Software Development packages