commit fixes

This commit is contained in:
yash-dk 2020-09-12 20:54:31 +05:30
parent 73dd8fa69e
commit aa498882f8
3 changed files with 11 additions and 7 deletions

View File

@ -51,7 +51,7 @@ class UserMethods:
request_index = 0
self._last_request = time.time()
attempt = 0
for attempt in retry_range(self._request_retries):
try:
future = sender.send(request, ordered=ordered)

View File

@ -95,16 +95,19 @@ def strip_text(text, entities):
return text
def retry_range(retries, reconnect=False):
def retry_range(retries, force_retry=True):
"""
Generates an integer sequence starting from 1. If `retries` is
not a zero or a positive integer value, the sequence will be
infinite, otherwise it will end at `retries + 1`.
"""
if retries == 0 and not reconnect:
# We need atleast one iteration even if the retries are 0
# when force_retry is True.
if retries == 0 and force_retry:
yield 1
# If retries are non 0 then itetrate
attempt = 0
while attempt != retries:
yield 1 + attempt

View File

@ -217,7 +217,7 @@ class MTProtoSender:
self._log.info('Connecting to %s...', self._connection)
connected = False
attempt = 0
for attempt in retry_range(self._retries):
if not connected:
connected = await self._try_connect(attempt)
@ -360,22 +360,24 @@ class MTProtoSender:
retries = self._retries if self._auto_reconnect else 0
attempt = 0
for attempt in retry_range(retries,reconnect=True):
for attempt in retry_range(retries, False):
try:
await self._connect()
except (IOError, asyncio.TimeoutError) as e:
last_error = e
self._log.info('Failed reconnection attempt %d with %s',
attempt, e.__class__.__name__)
attempt, e.__class__.__name__)
await asyncio.sleep(self._delay)
except Exception as e:
last_error = e
self._log.exception('Unexpected exception reconnecting on '
'attempt %d', attempt)
await asyncio.sleep(self._delay)
else:
self._send_queue.extend(self._pending_state.values())
self._pending_state.clear()
if self._auto_reconnect_callback:
asyncio.get_event_loop().create_task(self._auto_reconnect_callback())
@ -384,7 +386,6 @@ class MTProtoSender:
self._log.error('Automatic reconnection failed %d time(s)', attempt)
await self._disconnect(error=last_error.with_traceback(None))
def _start_reconnect(self, error):
"""Starts a reconnection in the background."""
if self._user_connected and not self._reconnecting: