simple floodwait fix

This commit is contained in:
Dmitry Bukhta 2018-07-25 21:34:37 +03:00
parent 26f121060d
commit 978bf7c32b

View File

@ -30,14 +30,14 @@ class UserMethods(TelegramBaseClient):
self._flood_waited_requests.pop(r.CONSTRUCTOR_ID, None) self._flood_waited_requests.pop(r.CONSTRUCTOR_ID, None)
else: else:
raise errors.FloodWaitError(capture=diff) raise errors.FloodWaitError(capture=diff)
results = None
request_index = 0 request_index = 0
self._last_request = time.time() self._last_request = time.time()
for _ in range(self._request_retries): for _ in range(self._request_retries):
try: try:
future = self._sender.send(request, ordered=ordered) future = self._sender.send(request, ordered=ordered)
if isinstance(future, list): if isinstance(future, list):
results = [] results = [] if not results else results
for f in future: for f in future:
result = await f result = await f
self.session.process_entities(result) self.session.process_entities(result)
@ -53,10 +53,13 @@ class UserMethods(TelegramBaseClient):
e.__class__.__name__, e) e.__class__.__name__, e)
except (errors.FloodWaitError, errors.FloodTestPhoneWaitError) as e: except (errors.FloodWaitError, errors.FloodTestPhoneWaitError) as e:
if utils.is_list_like(request): if utils.is_list_like(request):
request = request[request_index] constructor_id = request[request_index].CONSTRUCTOR_ID
request = request[request_index:]
else:
constructor_id = request.CONSTRUCTOR_ID
self._flood_waited_requests\ self._flood_waited_requests\
[request.CONSTRUCTOR_ID] = time.time() + e.seconds [constructor_id] = time.time() + e.seconds
if e.seconds <= self.flood_sleep_threshold: if e.seconds <= self.flood_sleep_threshold:
__log__.info('Sleeping for %ds on flood wait', e.seconds) __log__.info('Sleeping for %ds on flood wait', e.seconds)