--- id: reretry version: "0.11.8" license: Apache License 2.0 license_treatment: permissive maintenance: abandoned --- # reretry — An easy to use, but functional decorator for retrying on exceptions. License: permissive · Maintenance: abandoned · Downloads: 164.8K/mo ## What it is and what it does reretry is a decorator-based retry library that wraps function calls to automatically re-execute them on failure. It's a fork of the original `retry` package with added features: traceback logging on failed attempts, custom callback hooks after each failure, and support for async functions. The package has no external dependencies and works entirely with Python's standard library. You decorate a function with @retry and configure exception types, maximum attempts, delay between retries, exponential backoff, jitter, and logging behavior. It also provides a retry_call() function for dynamic retry configuration at runtime. The library is straightforward to use for common patterns like network requests, API calls, or any operation prone to transient failures. Use it for: - Retry HTTP requests or API calls with exponential backoff when facing transient network failures. - Wrap database operations to automatically retry on connection timeouts or temporary unavailability. - Retry async functions in concurrent applications where occasional failures are expected and recoverable. - Add custom failure callbacks to log, alert, or clean up state after each failed attempt before retrying. - Dynamically adjust retry behavior at runtime using retry_call() based on application logic or configuration. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. A decorator and function wrapper for retrying failed function calls with configurable delays, backoff, jitter, and exception handling—works with both sync and async functions. Yes, if you need a simple, dependency-free retry decorator for sync or async functions. The library is well-documented and covers common retry patterns. However, the abandoned maintenance status (no updates since December 2022) means you should evaluate whether you can tolerate lack of future bug fixes or Python version support—acceptable for stable, low-risk retry logic but risky if you depend on active maintenance. ## Install pip install reretry uv add reretry poetry add reretry ## Installing reretry Before you install: Low friction: pure Python with no runtime dependencies, distributed as a wheel. Maintenance status is abandoned (last release 2022-12-18, 1335 days ago), so expect no bug fixes or updates. License in practice: Apache License 2.0 is permissive; you can use, modify, and distribute this package freely in commercial and private projects with minimal restrictions. Quickstart: from reretry import retry @retry(ValueError, tries=3, delay=1, backoff=2) def unstable_operation(): # function body pass unstable_operation() Requires Python 3.7 or later. Optional: install the `decorator` package to preserve function signatures. Verify before relying: - Whether the abandoned status and lack of updates since 2022-12-18 pose a risk for your use case. - Performance characteristics when used with high-frequency retry scenarios or very large numbers of retries. ## Package facts - License: Apache License 2.0 (permissive) - Python support: supports_current - Install friction: low - Maintenance: abandoned - Downloads: 164.8K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags retry decorator, function retry with backoff, async retry decorator, exponential backoff retry, exception retry handler, retry with jitter, configurable retry logic, retry-logic, async-support, error-handling [View on SkillFed](https://skillfed.io/packages/reretry) · [View on PyPI](https://pypi.org/project/reretry/)