aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhazhyk <[email protected]>2017-07-22 20:04:43 -0700
committerkhazhyk <[email protected]>2017-07-22 20:10:28 -0700
commit62cdfbdbcd6aaa2647ba69ba0f9c7d0e8d9b35bc (patch)
treee9f995f8ad78a5dc36e3638b3d418bd331601cc2
parentRetry on 500 in HTTPClient.request (diff)
downloaddiscord.py-62cdfbdbcd6aaa2647ba69ba0f9c7d0e8d9b35bc.tar.xz
discord.py-62cdfbdbcd6aaa2647ba69ba0f9c7d0e8d9b35bc.zip
Raise in HTTPClient.request when out of retries
Raise after loop completes without returning with most recent values for r, data. This is a bit less fragile than checking tries < 4, since changing the retry count requires changing values in multiple places. (There seemed to already be handling in the 502 retry, tries <= 5, which always evaluated to true, e.g.) Previously, once out of retries, we would always return None without raising. This won't NameError so long as we make at least one HTTP request.
-rw-r--r--discord/http.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/discord/http.py b/discord/http.py
index 2d3bb8e1..bddf56e3 100644
--- a/discord/http.py
+++ b/discord/http.py
@@ -194,7 +194,7 @@ class HTTPClient:
continue
# we've received a 500 or 502, unconditional retry
- if r.status in {500, 502} and tries <= 5:
+ if r.status in {500, 502}:
yield from asyncio.sleep(1 + tries * 2, loop=self.loop)
continue
@@ -208,6 +208,8 @@ class HTTPClient:
finally:
# clean-up just in case
yield from r.release()
+ # We've run out of retries, raise.
+ raise HTTPException(r, data)
def get_attachment(self, url):
resp = yield from self._session.get(url)