Easy to use retry decorator.
Project description
Easy to use retry decorator.
Step side
It’s fork: https://github.com/invl/retry
My changes had started from version 0.9.3 (see ChangeLog)
Features
No external dependency (stdlib only).
(Optionally) Preserve function signatures (pip install decorator).
Original traceback, easy to debug.
Installation
$ pip install retry-sh
API
retry decorator
Various retrying logic can be achieved by combination of arguments.
Examples
from retry import retry
@retry()
def make_trouble():
'''Retry until succeed'''
@retry(ZeroDivisionError, tries=3, delay=2)
def make_trouble():
'''
Retry on ZeroDivisionError,
raise error after 3 attempts, sleep 2 seconds between attempts.
'''
@retry((ValueError, TypeError), delay=1, backoff=2)
def make_trouble():
'''
Retry on ValueError or TypeError,
sleep 1, 2, 4, 8, ... seconds between attempts.
'''
@retry((ValueError, TypeError), delay=1, backoff=2, max_delay=4)
def make_trouble():
'''
Retry on ValueError or TypeError,
sleep 1, 2, 4, 4, ... seconds between attempts.
'''
@retry(ValueError, delay=1, jitter=1)
def make_trouble():
'''
Retry on ValueError,
sleep 1, 2, 3, 4, ... seconds between attempts.
'''
# If you enable logging, you can get warnings like 'ValueError, retrying in
# 1 seconds'
if __name__ == '__main__':
import logging
logging.basicConfig()
make_trouble()
retry_call
This is very similar to the decorator, except that it takes a function and its arguments as parameters. The use case behind it is to be able to dynamically adjust the retry arguments.
import requests
from retry.api import retry_call
def make_trouble(service, info=None):
if not info:
info = ''
r = requests.get(service + info)
return r.text
def what_is_my_ip(approach=None):
if approach == "optimistic":
tries = 1
elif approach == "conservative":
tries = 3
else:
# skeptical
tries = -1
result = retry_call(
make_trouble,
fargs=["http://ipinfo.io/"],
fkwargs={"info": "ip"},
tries=tries
)
print(result)
what_is_my_ip("conservative")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file retry-sh-1.0.5.tar.gz
.
File metadata
- Download URL: retry-sh-1.0.5.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 107cc934854f91d23708a695468a430fb02f89cd54429cefefd082729729ad31 |
|
MD5 | 6a068d9c5a9456965bfba9e0a1d0efb1 |
|
BLAKE2b-256 | cab268b4e50faa987dccbd34dca776955d53f2f98aa493264f0dd083b301ae66 |
File details
Details for the file retry_sh-1.0.5-py2.py3-none-any.whl
.
File metadata
- Download URL: retry_sh-1.0.5-py2.py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c1a3f75f251903602abad91b0d88f614247c3b7af272224fa0ae4b8893459b3 |
|
MD5 | 4e1b8e262b5f3ffea626e45b14bd2a4f |
|
BLAKE2b-256 | 730e6f7bcfb113f0a92a8d4c313975cf192d207b2070aba86454ccf14a64f83b |