diff options
author | uzhas <uzhas@ydb.tech> | 2024-06-19 20:06:32 +0300 |
---|---|---|
committer | uzhas <uzhas@ydb.tech> | 2024-06-19 20:16:54 +0300 |
commit | 93108b981df25d1adbac948754f5955075eedcc8 (patch) | |
tree | be8163ba74d6ce0f360424d777702174e354db3c /contrib/python/retry/py3/.dist-info | |
parent | 174edaf3b2e14c1164dcbe616906a6b8f62e96ae (diff) | |
download | ydb-93108b981df25d1adbac948754f5955075eedcc8.tar.gz |
add retry py lib
e9b0291ce8188afa295b944f29ce6efbb38bcd92
Diffstat (limited to 'contrib/python/retry/py3/.dist-info')
-rw-r--r-- | contrib/python/retry/py3/.dist-info/METADATA | 184 | ||||
-rw-r--r-- | contrib/python/retry/py3/.dist-info/top_level.txt | 1 |
2 files changed, 185 insertions, 0 deletions
diff --git a/contrib/python/retry/py3/.dist-info/METADATA b/contrib/python/retry/py3/.dist-info/METADATA new file mode 100644 index 0000000000..c5986d2fea --- /dev/null +++ b/contrib/python/retry/py3/.dist-info/METADATA @@ -0,0 +1,184 @@ +Metadata-Version: 2.0 +Name: retry +Version: 0.9.2 +Summary: Easy to use retry decorator. +Home-page: https://github.com/invl/retry +Author: invl +Author-email: invlpg@gmail.com +License: Apache License 2.0 +Platform: UNKNOWN +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Apache Software License +Classifier: Natural Language :: English +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Software Development +Requires-Dist: decorator (>=3.4.2) +Requires-Dist: py (<2.0.0,>=1.4.26) + +retry +===== + +.. image:: https://pypip.in/d/retry/badge.png + :target: https://pypi.python.org/pypi/retry/ + +.. image:: https://pypip.in/v/retry/badge.png + :target: https://pypi.python.org/pypi/retry/ + +.. image:: https://pypip.in/license/retry/badge.png + :target: https://pypi.python.org/pypi/retry/ + + +Easy to use retry decorator. + + +Features +-------- + +- No external dependency (stdlib only). +- (Optionally) Preserve function signatures (`pip install decorator`). +- Original traceback, easy to debug. + + +Installation +------------ + +.. code-block:: bash + + $ pip install retry + + +API +--- + +retry decorator +^^^^^^^^^^^^^^^ + +.. code:: python + + def retry(exceptions=Exception, tries=-1, delay=0, max_delay=None, backoff=1, jitter=0, logger=logging_logger): + """Return a retry decorator. + + :param exceptions: an exception or a tuple of exceptions to catch. default: Exception. + :param tries: the maximum number of attempts. default: -1 (infinite). + :param delay: initial delay between attempts. default: 0. + :param max_delay: the maximum value of delay. default: None (no limit). + :param backoff: multiplier applied to delay between attempts. default: 1 (no backoff). + :param jitter: extra seconds added to delay between attempts. default: 0. + fixed if a number, random if a range tuple (min, max) + :param logger: logger.warning(fmt, error, delay) will be called on failed attempts. + default: retry.logging_logger. if None, logging is disabled. + """ + +Various retrying logic can be achieved by combination of arguments. + + +Examples +"""""""" + +.. code:: python + + from retry import retry + +.. code:: python + + @retry() + def make_trouble(): + '''Retry until succeed''' + +.. code:: python + + @retry(ZeroDivisionError, tries=3, delay=2) + def make_trouble(): + '''Retry on ZeroDivisionError, raise error after 3 attempts, sleep 2 seconds between attempts.''' + +.. code:: python + + @retry((ValueError, TypeError), delay=1, backoff=2) + def make_trouble(): + '''Retry on ValueError or TypeError, sleep 1, 2, 4, 8, ... seconds between attempts.''' + +.. code:: python + + @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.''' + +.. code:: python + + @retry(ValueError, delay=1, jitter=1) + def make_trouble(): + '''Retry on ValueError, sleep 1, 2, 3, 4, ... seconds between attempts.''' + +.. code:: python + + # 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 +^^^^^^^^^^ + +.. code:: python + + def retry_call(f, fargs=None, fkwargs=None, exceptions=Exception, tries=-1, delay=0, max_delay=None, backoff=1, + jitter=0, + logger=logging_logger): + """ + Calls a function and re-executes it if it failed. + + :param f: the function to execute. + :param fargs: the positional arguments of the function to execute. + :param fkwargs: the named arguments of the function to execute. + :param exceptions: an exception or a tuple of exceptions to catch. default: Exception. + :param tries: the maximum number of attempts. default: -1 (infinite). + :param delay: initial delay between attempts. default: 0. + :param max_delay: the maximum value of delay. default: None (no limit). + :param backoff: multiplier applied to delay between attempts. default: 1 (no backoff). + :param jitter: extra seconds added to delay between attempts. default: 0. + fixed if a number, random if a range tuple (min, max) + :param logger: logger.warning(fmt, error, delay) will be called on failed attempts. + default: retry.logging_logger. if None, logging is disabled. + :returns: the result of the f function. + """ + +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. + +.. code:: python + + 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") + + + diff --git a/contrib/python/retry/py3/.dist-info/top_level.txt b/contrib/python/retry/py3/.dist-info/top_level.txt new file mode 100644 index 0000000000..77428f7b73 --- /dev/null +++ b/contrib/python/retry/py3/.dist-info/top_level.txt @@ -0,0 +1 @@ +retry |