diff --git a/platformio/http.py b/platformio/http.py index 3c77ff32..d3b90606 100644 --- a/platformio/http.py +++ b/platformio/http.py @@ -84,7 +84,7 @@ class HTTPSessionIterator: total=5, backoff_factor=1, # [0, 2, 4, 8, 16] secs # method_whitelist=list(Retry.DEFAULT_METHOD_WHITELIST) + ["POST"], - status_forcelist=[413, 429, 500, 502, 503, 504], + status_forcelist=[413, 500, 502, 503, 504], ) def __iter__(self): # pylint: disable=non-iterator-returned diff --git a/platformio/registry/mirror.py b/platformio/registry/mirror.py index 8805ffe5..240e9a81 100644 --- a/platformio/registry/mirror.py +++ b/platformio/registry/mirror.py @@ -17,6 +17,7 @@ from urllib.parse import urlparse from platformio import __registry_mirror_hosts__ from platformio.cache import ContentCache +from platformio.exception import UserSideException from platformio.http import HTTPClient from platformio.registry.client import RegistryClient @@ -61,6 +62,11 @@ class RegistryFileMirrorIterator: ), x_with_authorization=RegistryClient.allowed_private_packages(), ) + if response.status_code == 429: + raise UserSideException( + "Download limit exceeded. Try again in 24 hours. " + "If this persists, contact " + ) stop_conditions = [ response.status_code not in (302, 307), not response.headers.get("Location"),