diff --git a/plextraktsync/decorators/rate_limit.py b/plextraktsync/decorators/rate_limit.py index fa1a1c1d0f..748d0e81a3 100644 --- a/plextraktsync/decorators/rate_limit.py +++ b/plextraktsync/decorators/rate_limit.py @@ -4,7 +4,7 @@ from click import ClickException from decorator import decorator -from trakt.errors import RateLimitException +from trakt.errors import AccountLimitExceeded, RateLimitException from plextraktsync.factory import logging @@ -18,7 +18,15 @@ def rate_limit(fn, retries=5, *args, **kwargs): while True: try: return fn(*args, **kwargs) - except RateLimitException as e: + except (RateLimitException, AccountLimitExceeded) as e: + if isinstance(e, AccountLimitExceeded): + logger.error(f"Trakt Error: {e}") + logger.error(f"Trakt Limit: {e.account_limit}") + logger.error(f"Trakt Details: {e.details}") + logger.error(f"Trakt headers: {e.response.headers}") + logger.error(f"Trakt content: {e.response.content}") + raise ClickException("Skip Retry") + if retry == retries: logger.error(f"Trakt Error: {e}") logger.error(f"Last call: {fn.__module__}.{fn.__name__}({args[1:]}, {kwargs})") @@ -28,4 +36,5 @@ def rate_limit(fn, retries=5, *args, **kwargs): retry += 1 logger.warning(f"{e} for {fn.__module__}.{fn.__name__}(), retrying after {seconds} seconds (try: {retry}/{retries})") logger.debug(e.details) + raise ClickException("Skip Retry") sleep(seconds) diff --git a/plextraktsync/decorators/retry.py b/plextraktsync/decorators/retry.py index f6b3ff44fa..63c1608f18 100644 --- a/plextraktsync/decorators/retry.py +++ b/plextraktsync/decorators/retry.py @@ -32,6 +32,7 @@ def retry(fn, retries=5, *args, **kwargs): TraktBadGateway, TraktUnavailable, TraktInternalException, + # TraktInternalException, ) as e: if count == retries: logger.error(f"Error: {e}") @@ -48,3 +49,4 @@ def retry(fn, retries=5, *args, **kwargs): count += 1 logger.warning(f"{e} for {fn.__module__}.{fn.__name__}(), retrying after {seconds} seconds (try: {count}/{retries})") sleep(seconds) + raise ClickException("EEE")