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:
parent
f32848160c
commit
9b2ada5dd0
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue