Skip to content

henriquelino/retimer

Repository files navigation

retimer

A simple package to make retry loops easier

PyPI version Build status GitHub stars Support Python versions

Getting started

You can get retimer from PyPI, which means it's easily installable with pip:

python -m pip install retimer

Example usage

Think of a scenario where you need to keep trying to do something for a range of time, usually you can write this:

from time import perfcounter

timeout = 10
begin = perfcounter()
while percounter() - begin < timeout:
     # do something for 10 seconds
     
     if retry_doing_something:
         time.sleep(.5)
         continue
         
     if something_bad:
         break
         
     # all good
     break
     
if perfcounter - begin >= timeout:
    print(f"Could not do something after {timeout} seconds")
else:
    print("Success!")

Rewriting using this package becomes:

from retimer import Timer
import time

timer = Timer(10)
while timer.not_expired:
    # do something for 10 seconds
    
    if retry_doing_something:
        time.sleep(.5)
        continue
        
    if something_bad:
        timer.explode()
    
    # all good
    break
    
if timer.expired:
    print(f"Could not do something after {timer.duration} seconds")
else:
    print("Success!")
    

Although both codes accomplish the same result, I personally find the second one more readable and shines when I need two or more chained loops

Changelog

Refer to the CHANGELOG.md file.