xoutil.tasking
– Task oriented tools.¶
Task, multitasking, and concurrent programming tools.
Warning
Experimental. API is not settled.
New in version 1.8.0.
-
class
xoutil.tasking.
retrier
(max_tries=None, max_time=None, wait=DEFAULT_WAIT_INTERVAL, retry_only=None)[source]¶ An auto-retrying dispatcher.
Return a callable that take another callable (func) and its arguments and runs it in an auto-retrying loop.
If func raises any exception that is in retry_only, and it has being tried less than max_tries and the time spent executing the function (waiting included) has not reached max_time, the function will be retried.
wait can be a callable or a number. If wait is callable, it must take a single argument with the previous waiting we did (
None
for the first retry) and return the number of seconds to wait before retrying.If wait is a number, we convert it to a callable with
StandardWait(wait)
.See also
If retry_only is None, all exceptions (that inherits from Exception) will be retried. Otherwise, only the exceptions in retry_only will be retried.
Waiting is done with
time.sleep()
. Time tracking is done withtime.monotonic()
.New in version 1.8.2.
-
xoutil.tasking.
retry
(fn, args=None, kwargs=None, *, max_tries=None, max_time=None, wait=DEFAULT_WAIT_INTERVAL, retry_only=None)[source]¶ Run fn with args and kwargs in an auto-retrying loop.
See
retrier
. This is just:>>> retrier(max_tries=max_tries, max_time=max_time, wait=wait, ... retry_only=retry_only)(fn, *args, **kwargs)
New in version 1.8.2.
-
class
xoutil.tasking.
StandardWait
(wait=DEFAULT_WAIT_INTERVAL)[source]¶ A standard constant wait algorithm.
Instances are callables that comply with the need of the wait argument for
retrier
. This callable always return the same wait value.We never wait less than
MIN_WAIT_INTERVAL
.New in version 1.8.2.
-
class
xoutil.tasking.
BackoffWait
(wait=DEFAULT_WAIT_INTERVAL)[source]¶ A wait algorithm with an exponential backoff.
Instances are callables that comply with the need of the wait argument for
retrier
. This callable always return the same wait value.At each call the wait is increased by doubling backoff (given in milliseconds).
We never wait less than
MIN_WAIT_INTERVAL
.New in version 1.8.2.
-
xoutil.tasking.
MIN_WAIT_INTERVAL
= 0.02¶ The minimal time (in seconds) to wait between retries.
New in version 1.8.2.
-
xoutil.tasking.
DEFAULT_WAIT_INTERVAL
= 0.05¶ The default time (in seconds) to wait between retries.
New in version 1.8.2.