Add option to raise last error instead of generic ValueError (#1571)

This commit is contained in:
Tulir Asokan
2020-10-01 12:53:17 +03:00
committed by Lonami Exo
parent d5e4398ace
commit 8ce7e776c1
2 changed files with 16 additions and 1 deletions

View File

@@ -50,8 +50,9 @@ class UserMethods:
raise errors.FloodWaitError(request=r, capture=diff)
request_index = 0
last_error = None
self._last_request = time.time()
for attempt in retry_range(self._request_retries):
try:
future = sender.send(request, ordered=ordered)
@@ -82,12 +83,14 @@ class UserMethods:
except (errors.ServerError, errors.RpcCallFailError,
errors.RpcMcgetFailError, errors.InterdcCallErrorError,
errors.InterdcCallRichErrorError) as e:
last_error = e
self._log[__name__].warning(
'Telegram is having internal issues %s: %s',
e.__class__.__name__, e)
await asyncio.sleep(2)
except (errors.FloodWaitError, errors.SlowModeWaitError, errors.FloodTestPhoneWaitError) as e:
last_error = e
if utils.is_list_like(request):
request = request[request_index]
@@ -106,6 +109,7 @@ class UserMethods:
raise
except (errors.PhoneMigrateError, errors.NetworkMigrateError,
errors.UserMigrateError) as e:
last_error = e
self._log[__name__].info('Phone migrated to %d', e.new_dc)
should_raise = isinstance(e, (
errors.PhoneMigrateError, errors.NetworkMigrateError
@@ -114,6 +118,8 @@ class UserMethods:
raise
await self._switch_dc(e.new_dc)
if self._raise_last_call_error and last_error is not None:
raise last_error
raise ValueError('Request was unsuccessful {} time(s)'
.format(attempt))