"""Utilities.""" import time from handle_user_changes import config def retry(err_cls=None): """Retry request on errors. Args: err_cls: Handle only this specific error. """ def decorator(f): def wrapper(*args, **kwargs): error_cls = err_cls or Exception for i in range(1, config.RATE_LIMIT_RETRY_COUNT + 1): try: return f(*args, **kwargs) except error_cls: if i == config.RATE_LIMIT_RETRY_COUNT: raise time.sleep(i * config.RATE_LIMIT_WATE_MULTIPLIER) return wrapper return decorator