--- id: eth-retry version: "0.3.8" license: MIT license_treatment: permissive maintenance: active --- # 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 License: permissive · Maintenance: active · Downloads: 158.4K/mo ## 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 above — 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 pip install eth-retry uv add eth-retry 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_current - Install friction: low - Maintenance: active - Downloads: 158.4K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags ethereum retry decorator, EVM transient error handling, RPC timeout retry, automatic retry with backoff, eth-brownie error recovery, rate limit retry logic, async retry decorator, ethereum, resilience, decorator [View on SkillFed](https://skillfed.io/packages/eth-retry) · [View on PyPI](https://pypi.org/project/eth-retry/)