Retry on any exception
Also seen these when testing:
WSError: User not found
MalformedResponseError: Malformed response from Last.fm. Underlying error: mismatched tag: line 6, column 2
NetworkError: NetworkError: [Errno 8] nodename nor servname provided, or not known
@@ -2777,27 +2777,17 @@ def _collect_nodes(limit, sender, method_name, cacheable, params=None):
while not end_of_pages and (not limit or (limit and len(nodes) < limit)):
params["page"] = str(page)
- tries = 0
+ tries = 1
while True:
- tries += 1
try:
doc = sender._request(method_name, cacheable, params)
break # success
- except MalformedResponseError as e:
- if tries < 3:
- time.sleep(1) # wait and try again
- else:
- raise e
- except WSError as e:
- if tries < 3 and int(e.get_id()) in [
- # "Please try again" statuses
- STATUS_OPERATION_FAILED,
- STATUS_OFFLINE,
- STATUS_TEMPORARILY_UNAVAILABLE,
- ]:
- time.sleep(1) # wait and try again
- else:
+ except Exception as e:
+ if tries >= 3:
raise e
+ # Wait and try again
+ time.sleep(1)
+ tries += 1
doc = cleanup_nodes(doc)
