jd/tenacity

Retrying library for Python

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 15 minutes ago
Added to GitGenius on September 7th, 2026
Created on August 11th, 2016
Open Issues & Pull Requests: 50 (+0)
GitHub issues: Enabled
Number of forks: 350
Total Stargazers: 8,777 (+0)
Total Subscribers: 51 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 21.8 days
Mean response time: 380.0 days
90th percentile: 1619.2 days
Tracked items: 129

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 2% of issues opened in the past year have been closed. Three people close 92% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 17
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 430 days
Stale 30+ days: 14
Stale 90+ days: 12

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 1
Events in 7 days: 1

Top labels

  • documentation (6)
  • enhancement (5)
  • question (3)
  • help wanted (2)
  • bug (1)

Most active issues this week

Detailed Description

Tenacity is a retrying library for Python that simplifies adding retry behavior to functions and code blocks through decorators and context managers.

The library addresses the need to handle transient failures in unreliable operations. It provides a decorator-based API that lets you specify stop conditions (such as maximum attempt count or time limit), wait conditions (including exponential backoff), and customize retry behavior based on exception types or return values. You can apply retries to regular functions, coroutines, or arbitrary code blocks using a context manager.

Tenacity suits any Python project where operations may fail transiently and need automatic recovery. It works well for network calls, flaky I/O operations, or any scenario where exponential backoff and bounded retry logic would improve reliability. The library originated as a maintained fork of an unmaintained predecessor, adding significant new functionality and fixing longstanding bugs while not maintaining API compatibility with that earlier project.

The project maintains active continuous integration with automated testing across supported Python versions. Development follows a structured workflow with pull request review processes and automated status checks before merging.