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
This commit is contained in:
Hugo 2019-02-10 16:06:58 +02:00
parent f32848160c
commit 9b2ada5dd0

View file

@ -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)): while not end_of_pages and (not limit or (limit and len(nodes) < limit)):
params["page"] = str(page) params["page"] = str(page)
tries = 0 tries = 1
while True: while True:
tries += 1
try: try:
doc = sender._request(method_name, cacheable, params) doc = sender._request(method_name, cacheable, params)
break # success break # success
except MalformedResponseError as e: except Exception as e:
if tries < 3: 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:
raise e raise e
# Wait and try again
time.sleep(1)
tries += 1
doc = cleanup_nodes(doc) doc = cleanup_nodes(doc)